Part Number Hot Search : 
NCP4200 414EH KSC1393 5116100 HMC392 2SB817 BZX84C15 HD1105G
Product Description
Full Text Search
 

To Download MC1251A Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  advanced step motor control chipset mc1451a, mc1451a-e MC1251A, MC1251A-e mc1151a, mc1151a-e advanced control of up to 4 step motors per chipset high speed pulse and direction output s-curve, trapezoidal, velocity contouring, and electronic gearing trajectory modes optional incremental encoder feedback software & feature compatible with other versions of pmd's chipset family available in 1, 2, or 4 axis configurations 32-bit position, velocity, acceleration and j erk trajectory profile registers pulse and direction output for each axis at up to 1.5 mpulses/sec on-the-fly stall detection two travel-limit switches per axis external motion breakpoint per axis intelligent e asy-to-use packet-oriented command protocol programmable pulse output modes chipset developer's kit available features general description the mc1451a is a dedicated motion processor which functions as a complete chip-based step motor controller. packaged in a 2-ic chipset, this device performs trajectory generation and pulse and direction signal generation for use in a wide variety of stepper-based systems. the mc1451a provides an optional third ic which allows incremental encoder signal input for position verification and on-the-fly stall detection. the mc1451a is available in a one, a two, and a four-axis configuration. the mc1451a is functionally similar to other pmd motion processors however it is dedicated to the control of step motors, instead of servo motors. all of these devices provide sophisticated trajectory generation and synchronization features allowing the creation of complex motion sequences. in addition to pulse and direction circuitry which can output at up to 1.5 megapulses per second the chipset provides two limit switches per axis, a programmable external signal breakpoint per axis, and an 'at rest' output signal. the chipset is controlled by a host processor which interfaces with the chipset via an 8-bit bi-directional port. communications to/from the chipset consist of packet-oriented messages. a host interrupt line is provided so that the chipset can signal the host when special conditions occur such as stall detection. the chipset is packaged in 2 68-pin plcc packages. an optional third 44 pin plcc chip provides encoder input. all chips are cmos and are powered by 5 volts. doc. rev. 12.02, nov. 1997 typical configuration host processor mc1451a (i/o & cp & enc) e axis 1 e axis 2 e axis 3 e axis 4 amp amp amp amp m m m m (mc1451a only) (mc1451a only) (mc1451a, MC1251A only) performance motion devices, inc. 12 waltham st. lexington, ma 02421 tel: 781.674.9860 fax: 781.674.9861 www.pmdcorp.com
2 table of contents product family overview....................................... page 3 introduction........................................................... page 3 family summary................................................... page 3 electrical characteristics....................................... page 4 absolute maximum ratings.................................. page 5 operating ratings................................................. page 5 dc electrical characteristics ................................ page 5 ac electrical characteristics ................................ page 5 i/o timing diagrams............................................. page 7 pinouts .................................................................... page 11 mc1451a.............................................................. page 11 MC1251A, mc1151a............................................ page 12 pin descriptions.................................................... page 13 theory of operations ............................................. page 17 trajectory profile generation................................ page 18 s-curve point to point....................................... page 19 trapezoidal point to point................................. page 20 velocity contouring........................................... page 20 electronic gear................................................. page 21 trajectory control ................................................. page 21 halting the trajectory ...................................... page 21 motion complete status ................................... page 22 parameter loading & updating ............................ page 22 manual update ................................................. page 22 breakpoints....................................................... page 23 external breakpoints and homing .................... page 23 disabling automatic profile update .................. page 24 travel limit switches............................................ page 24 axis timing ........................................................... page 24 host communications .......................................... page 25 electrical interface ............................................ page 25 packet format...................................................page 25 packet checksum .............................................page 26 illegal commands .............................................page 26 command errors...............................................page 26 axis addressing.................................................page 26 axis status ............................................................page 27 status word ......................................................page 27 miscellaneous mode status word.....................page 27 host interrupts.......................................................page 28 pulse & direction signal generation.....................page 29 pulse generation control...........................................page 29 at rest indicator.........................................................page 29 encoder position feedback ..................................page 29 stall detection............................................................page 30 position error .............................................................page 30 recovering from a motion error ...............................page 30 host commands .....................................................page 32 command summary .............................................page 32 command reference ............................................page 34 axis control.......................................................page 34 profile generation .............................................page 35 parameter update.............................................page 39 interrupt processing ..........................................page 41 status/mode ......................................................page 42 pulse generation ..............................................page 43 encoder.............................................................page 44 miscellaneous ...................................................page 45 application notes ...................................................page 48 isa bus interfacing ................................................page 48 performance motion devices, inc. does not assume any responsibility for use of any circuitry described in this manual, nor does it make any guarantee as to the accuracy of this manual. performance motion devices, inc. reserves the right to change the circuitry de scribed in this manual, or the manual itself, at any time. the components described in this manual are not authorized for use in life-support systems without the express written permissi on of performance motion devices, inc.
3 product family overview mc1401 series mc1231 series mc1241 series mc1451 series # of axes 4, 2, or 1 2 or 1 2 or 1 4, 2, or 1 motors supported dc servo brushless servo stepper stepper encoder format incremental (no dash version) and parallel ('-p' version) incremental incremental incremental* output format dc servo sinusoidally commutated microstepping pulse and direction s-curve profiling yes yes yes yes electronic gearing yes yes yes yes on-the-fly changes yes yes yes yes limit switches yes yes yes yes pid & feedforward yes yes - - pwm output yes yes yes - dac-compatible output yes yes yes - pulse & direction output ---yes index & home signal yes yes yes yes chipset p/n's mc1401a, mc1401a-p (4 axes) mc1201a, mc1201a-p (2 axes) mc1101a, mc1101a-p (1 axis) mc1231a (2 axes) mc1131a (1 axis) mc1241a (2 axes) mc1141a (1 axis) mc1451a, mc1451a-e (4 axes) MC1251A, MC1251A-e (2 axes) mc1151a, mc1151a-e (1 axis) developer's kit p/n's: dk1401a, dk1401a-p dk1231a dk1241a dk1451a * optional using third i.c. ('-e' version) introduction this manual describes the operational characteristics of the mc1451a, MC1251A, mc1151a, mc1451a-e, MC1251A-e, and mc1151a-e motion processors. these devices are members of pmd's 1st generation motion processor family, which consists of 16 separate products organized into four groups. each of these devices are complete chip-based motion controllers. they provide trajectory generation and related motion control functions. depending on the type of motor controlled they provide servo loop closure, on-board commutation for brushless motors, and high speed pulse and direction outputs. together these products provide a software-compatible family of dedicated motion processor chips which can handle a large variety of system configurations. each of these chips utilize a similar architecture, consisting of a high- speed dsp (digital signal processor) computation unit , along with an asic (application specific integrated circuit). the computation unit contains special on-board hardware such as a multiply instruction that makes it well suited for the task of motion control. along with a similar hardware architecture these chips also share most software commands, so that software written for one chipset may be re- used with another, even though the type of motor may be different. this manual describes the operation of the mc1451a, MC1251A, mc1151a, mc1451a-e, MC1251A-e, and mc1151a-e chipsets. for technical details on other members of pmd's first generation motion processors see the corresponding product manual. family summary mc1401 series (mc1401a, mc1201a, mc1101a, mc1401a-p, mc1201a-p, mc1101a-p) - these chipsets take in incremental encoder signals (standard version) or parallel word encoder signals (-p version) and output a motor command in either pwm or dac- compatible format. these chipsets come in 1, 2 or 4 axis versions and can be used with dc brushed motors, or brushless motors using external commutation. mc1231 series (mc1231a, mc1131a) - these chipsets take in incremental quadrature encoder signals and output sinusoidally commutated motor signals appropriate for driving brushless motors. they are available in one or two axis versions. depending on the motor type they output two or three phased signals per axis in either pwm or dac-compatible format. mc1241 series (mc1241a, mc1141a) - these chipsets provide internal microstepping generation for stepping motors. they are available in a one or a two-axis version. two phased signals are output per axis in either pwm or dac-compatible format. an incremental encoder signal can be input to confirm motor position. mc1451 series (mc1451a, MC1251A, mc1151a, mc1451a-e, MC1251A-e, mc1151a-e) - these chipsets provide very high speed pulse and direction signal output appropriate for driving step motor- based systems. they are available in a one, two, or four-axis version and are also available with quadrature encoder input. each of these chipsets has an associated chipset developer's kit available for it. for more information contact your pmd representative.
4 electrical characteristics overview the mc1451a-consists of either two 68 pin plcc's (standard version), or these same two i.c.s with an additional 44 pin plcc for incremental encoder feedback (-e version). all of these devices are fabricated in cmos. the two 68 pin plccs are known as the i/o and the cp chips. the 44-pin plcc is known as the enc chip. the peripheral input/output ic (i/o chip) is responsible for interfacing to the host processor and for generating the high speed pulse and direction output. the command processor ic (cp chip) is responsible for all host command, trajectory, and related computations. the enc chip is responsible for incremental encoder feedback. the following figure shows a typical system block diagram, along with the pin connections between the i/o chip, cp chip, and enc chip if it is used. encoder (1-4 axis) host processor cp i/o data4-11 i/oaddr0-3 i/owrite i/ocntrl0-3 clkout amplifier (1-4 axis) motor (4 axis) enc data4-11 i/oaddr0-3 i/owrite i/ocntrl0-3 clkout use of the enc chip does not require a special version of the i/o or cp chips. the cp chip automatically recognizes the presence or absence of the enc chip and functions accordingly. the cp, i/o, and enc chip (if used) form a complete chipset and function together as one integrated motion processor. the major components connected to the chipset are the step & direction compatible amplifier (4, 2, or 1 axes), the optional encoder feedback channels (4, 2, or 1 axes), and the host processor. the chipset's pulse and direction output signals are connected to the motor amplifier. using this scheme the direction bit indicates whether the motor should move in the positive or negative direction, and the pulse signal indicates the desired motor speed. pulse and direction output is compatible with a wide variety of full, half, and microstepping amplifiers. using the -e chipset parts it is possible to input quadrature encoder feedback to the chipset. the encoder signals consist of the a and b quadrature signals from the encoder. the host processor is interfaced via an 8-bit bi-directional bus and various control signals. host communication is coordinated by a ready/busy signal, which indicates when communication is allowed. interconnections between the i/o and the cp chip consist of a data bus (8 bits) and various control and synchronization signals. interconnections between the cp and the enc chip (if used) also consist of a data bus (10 bits) and various control and synchronization signals. many of these signals are common between the i/o, cp, and the enc chips although there are no direct connections between just the enc and the i/o chip. the following table summarizes the signals that must be interconnected for the chipset to function properly. for each listed signal the i/o chip pin on the left side of the table is connected to the cp chip pin in the middle which is connected to the enc chip pin on the right side. i/o chip signal name i/o chip pin cp chip signal name cp chip pin enc chip signal name enc chip pin - - data2 58 cpdata2 22 - - data3 57 cpdata3 19 cpdata4 18 data4 50 cpdata4 9 cpdata5 5 data5 49 cpdata5 31 cpdata6 6 data6 46 cpdata6 41 cpdata7 7 data7 43 cpdata7 42 cpdata8 8 data8 40 cpdata8 44 cpdata9 17 data8 39 cpdata9 1 cpdata10 3 data10 36 cpdata10 12 cpdata11 1 data11 35 cpdata11 2 cpaddr0 68 i/oaddr0 28 cpaddr0 24 cpaddr1 27 i/oaddr1 9 - - cpaddr2 29 i/oaddr2 6 cpaddr2 20 cpaddr3 12 i/oaddr3 5 cpaddr3 23 cpcntr0 20 i/ocntr0 16 cpcntr0 15 cpcntr1 36 i/ocntr1 18 - - cpcntr2 22 i/ocntr2 68 - - cpcntr3 63 i/ocntr3 67 - - cpwrite 2 i/owrite 15 cpwrite 13 cpclk 46 clkout 19 cpclk 7 cpreset 43 reset 17 - - for a complete description of all pins see the 'pin descriptions' section of this manual. unless specifically noted otherwise, the term 'mc1451' or 'mc1451a' refers to the mc1451a, MC1251A, mc1151a, mc1451a- e, MC1251A-e, and mc1151a-e motion processors.
5 absolute maximum ratings unless otherwise stated, all electrical specifications are for both the i/o and cp chips. storage temperature, ts .................... -55 deg. c to +150 deg. c supply voltage, vcc ............................ -0.3 v to +7.0 v power dissipation, pd ......................... 650 mw (i/o and cp combined) operating ratings operating temperature, ta .................0 deg. c to +70 deg. c* nominal clock frequency, fclk ...........25.0 mhz supply voltage, vcc.............................4.75 v to 5.25 v * industrial and military operating ranges also available. contact your pmd representative for more information. dc electrical characteristics (vcc and ta per operating ratings, fclk = 25.0 mhz) symbol parameter min. max. units conditions vcc supply voltage 4.75 5.25 v idd supply current 100 ma open outputs input voltages vih logic 1 input voltage 2.0 vcc + 0.3 v vil logic 0 input voltage -0.3 0.8 v vihclk logic 1 voltage for clock pin (clkin) 3.0 vcc+0.3 v vihreset logic 1 voltage for reset pin (reset) 4.0 vcc+0.3 v output voltages voh logic 1 output voltage 2.4 v @cp io = 300 ua @i/o io = 4 ma vol logic 0 output voltage 0.33 v @cp io = 2 ma @i/o io = 4 ma iout tri-state output leakage current -20 20 ua 0 < vout < vcc iin input current -50 50 ua 0 < vi < vcc iinclk input current clkin -20 20 ua 0 < vi < vcc ac electrical characteristics (see reference timing diagrams) (vcc and ta per operating ratings; fclk = 25.0 mhz) (~ character indicates active low signal) timing interval t# min. max. units encoder and index pulse timing motor-phase pulse width t1 1.6 us dwell time per state t2 0.8 us index pulse setup and hold (relative to quad a and quad b low) t3 0 us reset timing stable power to reset 0.25 sec reset low pulse width 1.0 us clock timing clock frequency (fclk) 6.7 25.6 mhz clock pulse width t4 19.5 75 (note 2) ns clock period t5 39 149 (note 2) ns
6 timing interval t# min. max. units command byte write timing ~hostslct hold time t6 15 2000 (note 3) ns ~hostslct setup time t7 10 ns hostcmd setup time t8 10 ns host cmd hold time t9 25 ns hostrdy delay time t13 70 ns ~hostwrite pulse width t14 50 ns write data setup time t15 35 ns write data hold time t16 30 ns data word read timing ~hostslct hold time t6 15 2000 (note 3) ns ~hostslct setup time t7 (read only) - 20 ns hostcmd setup time t8 (read only) - 20 ns hostcmd hold time t9 25 ns read data access time t10 50 ns read data hold time t11 10 ns ~hostread high to hi-z time t12 50 ns hostrdy delay time t13 70 ns read recovery time t17 60 ns data word write timing ~hostslct hold time t6 15 2000 (note 3) ns ~hostslct setup time t7 10 ns hostcmd setup time t8 10 ns hostcmd hold time t9 25 ns hostrdy delay time t13 70 ns ~hostwrite pulse width t14 50 ns write data setup time t15 35 ns write data hold time t16 30 ns write recovery time t18 60 ns note 1 ~hostslct and hostcmd may optionally be de-asserted if setup and hold times are met. note 2 chip-set performance figures and timing information valid at fclk = 25.0 only. for timing information & performance parameters at fclk < 25.0 mhz, call pmd. note 3 two micro seconds maximum to release interface before chip set responds to command note 4 clkout from cp is 1/4 frequency of clkin (cp chip).
7 i/o timing diagrams the following diagrams show the mc1451a electrical interface timing. t#' values are listed in the above timing chart. quad a quad b t1 t1 t2 t2 t3 t3 index = ~a * ~b * ~ind ~index quadrature encoder input timing clock timing t4 t4 t5 clkin
8 t7 t6 t9 t14 t15 t16 t8 command byte write timing ~hostslct hostcmd ~hostwrite hostdata0-7 hostrdy t13
9 data word read timing ~hostslct t7 t8 t17 t6 t9 t13 note 1 note 1 t11 hostcmd hostdata0-7 hostrdy ~hostread t12 t10 high-z high-z high-z high byte low byte
10 data word write timing ~hostslct t7 t8 t18 t6 t9 t15 t15 t14 t14 t13 note 1 note 1 t16 t16 hostcmd hostdata0-7 hostrdy ~hostwrite high byte low byte
11 pinouts 1 9 10 26 27 43 60 44 61 i/o (top view) 1 9 10 26 27 43 60 44 61 cp (top view) 1 6 7 17 18 28 39 29 40 enc (top view) (chip outlines not drawn to scale) mc1451a & mc1451a-e pinouts cpcntrl2 cpcntrl3 hostcmd hostrdy hostread hostwrite hostslct hostintrpt hostdata0 hostdata1 hostdata2 hostdata3 hostdata4 hostdata5 hostdata6 hostdata7 cpdata4 cpdata5 cpdata6 cpdata7 cpdata8 cpdata9 cpdata10 cpdata11 cpaddr0 cpaddr1 28 42 13 26 30 23 40 35 11 39 34 10 46 52 45 29 12 2 20 36 43 pulse1 di r1 home1 pulse2 di r2 home2 pulse3 di r3 home3 pulse4 di r4 home4 cpcl k i/oclkin i/oclkout cpaddr2 cpaddr3 cpwri te cpcntrl0 cpcntrl1 cpreset 22 63 41 37 51 47 48 44 50 61 53 65 67 62 64 60 18 5 6 7 8 17 3 1 68 27 vcc 4, 21, 25, 38, 55 gnd 14, 15, 32, 49, 54, 66 i/o cp data2 data3 data4 data5 data6 data7 data8 data9 data10 data11 i/oaddr0 i/oaddr1 i/oaddr2 i/oaddr3 i/owrite poslimit1 poslimit2 poslimit3 poslimit4 neglimit1 neglimit2 neglimit3 neglimit4 56 55 54 53 24 19 17 16 18 68 67 atrest1 atrest2 atrest3 atrest4 clkin clkout reset i/ocntrl0 i/ocntrl1 i/ocntrl2 i/ocntrl3 58 57 50 49 46 43 40 39 36 35 28 9 6 5 15 52 45 42 38 51 44 41 37 vcc 4, 22, 33 gnd 3, 34 cpaddr0 cpaddr2 cpaddr3 cpwri te cpcntrl 0 cpdata2 cpdata3 cpdata4 cpdata5 cpdata6 cpdata7 cpdata8 cpdata9 cpdata10 cpdata11 30 36 17 18 27 28 5 29 7 33 6 quada1 quadb1 quada2 quadb2 quada3 quadb3 quada4 quadb4 cpcl k i/oclkin i/oclkout 24 20 23 13 15 22 19 9 31 41 42 44 1 12 2 vcc 3, 14, 16, 25, 35 gnd 10, 21, 32, 34, 43 enc
12 MC1251A & MC1251A-e pinouts cpcntrl2 cpcntrl3 hostcmd hostrdy hostread hostwrite hostslct hostintrpt hostdata0 hostdata1 hostdata2 hostdata3 hostdata4 hostdata5 hostdata6 hostdata7 cpdata4 cpdata5 cpdata6 cpdata7 cpdata8 cpdata9 cpdata10 cpdata11 cpaddr0 cpaddr1 28 42 13 26 30 23 46 52 45 29 12 2 20 36 43 pulse1 dir1 home1 pulse2 dir2 home2 cpclk i/oclkin i/oclkout cpaddr2 cpaddr3 cpwrite cpcntrl0 cpcntrl1 cpreset 22 63 41 37 51 47 48 44 50 61 53 65 67 62 64 60 18 5 6 7 8 17 3 1 68 27 vcc 4, 21, 25, 38, 55 gnd 14, 15, 32, 49, 54, 66 i/o cp data2 data3 data4 data5 data6 data7 data8 data9 data10 data11 i/oaddr0 i/oaddr1 i/oaddr2 i/oaddr3 i/owrite poslimit1 poslimit2 neglimit1 neglimit2 56 55 24 19 17 16 18 68 67 atrest1 atrest2 clkin clkout reset i/ocntrl0 i/ocntrl1 i/ocntrl2 i/ocntrl3 58 57 50 49 46 43 40 39 36 35 28 9 6 5 15 52 45 51 44 vcc 4, 22, 33 gnd 3 , 34 cpaddr0 cpaddr2 cpaddr3 cpwrite cpcntrl0 cpdata2 cpdata3 cpdata4 cpdata5 cpdata6 cpdata7 cpdata8 cpdata9 cpdata10 cpdata11 30 36 17 18 7 33 6 quada1 quadb1 quada2 quadb2 cpclk i/oclkin i/oclkout 24 20 23 13 15 22 19 9 31 41 42 44 1 12 2 vcc 3, 14, 16, 25, 35 gnd 10, 21, 32, 34, 43 enc mc1151a & mc1151a-e pinouts cpcntrl2 cpcntrl3 hostcmd hostrdy hostread hostwrite hostslct hostintrpt hostdata0 hostdata1 hostdata2 hostdata3 hostdata4 hostdata5 hostdata6 hostdata7 cpdata4 cpdata5 cpdata6 cpdata7 cpdata8 cpdata9 cpdata10 cpdata11 cpaddr0 cpaddr1 28 42 13 46 52 45 29 12 2 20 36 43 pulse1 dir1 home1 cpclk i/oclkin i/oclkout cpaddr2 cpaddr3 cpwrite cpcntrl0 cpcntrl1 cpreset 22 63 41 37 51 47 48 44 50 61 53 65 67 62 64 60 18 5 6 7 8 17 3 1 68 27 vcc 4, 21, 25, 38, 55 gnd 14, 15, 32, 49, 54, 66 i/o cp data2 data3 data4 data5 data6 data7 data8 data9 data10 data11 i/oaddr0 i/oaddr1 i/oaddr2 i/oaddr3 i/owrite poslimit1 neglimit1 56 24 19 17 16 18 68 67 atrest1 clkin clkout reset i/ocntrl0 i/ocntrl1 i/ocntrl2 i/ocntrl3 58 57 50 49 46 43 40 39 36 35 28 9 6 5 15 52 51 vcc 4, 22, 33 gnd 3 , 34 cpaddr0 cpaddr2 cpaddr3 cpwrite cpcntrl0 cpdata2 cpdata3 cpdata4 cpdata5 cpdata6 cpdata7 cpdata8 cpdata9 cpdata10 cpdata11 30 36 7 33 6 quada1 quadb1 cpclk i/oclkin i/oclkout 24 20 23 13 15 22 19 9 31 41 42 44 1 12 2 vcc 3, 14, 16, 25, 35 gnd 10, 21, 32, 34, 43 enc
13 pin descriptions the following tables provide pin descriptions for the mc1401 and mc1401-p series chipsets. ic pin name pin # description/functionality i/o chip pinouts i/o pulse1 pulse2 pulse3 pulse4 28 26 40 39 pulse signal for channels 1-4 (output). this signal is always a square wave, regardless of pulse rate. nominal 'step' occurs when signal goes from a high state to a low state. note: for mc1451a all 4 pins are valid. for MC1251A pins for axes 1 & 2 only are valid. for mc1151a pins for axis 1 only are valid. invalid axis pins can be left unconnected. i/o dir1 dir2 dir3 dir4 42 30 35 34 direction signal for channels 1-4 (output). this signal indicates the direction of motion, and works in conjunction with the pulse signal. a high level on this signal indicates a positive direction move, and a low level indicates a negative direction move. note: for mc1451a all 4 pins are valid. for MC1251A pins for axes 1 & 2 only are valid. for mc1151a pins for axis 1 only are valid. invalid axis pins can be left unconnected. i/o ~home1 ~home2 ~home3 ~home4 13 23 11 10 home signals for axis 1-4 (input). each of these signals provide a general purpose input to the external breakpoint mechanism. using these signals it is possible to stop, start, or alter the motion trajectory. see theory of operations for details. an active home signal is recognized by the chipset as a low state. note: for mc1451a all 4 pins are valid. for MC1251A pins for axes 1 & 2 only are valid. for mc1151a pin for axis 1 only is valid. invalid axis pins can be left unconnected. i/o cpclk 46 i/o chip clock (input). this signal is connected directly to the clkout pin (cp chip) and provides the clock signal for the i/o chip. the frequency of this signal is 1/4 the user-provided clkin (cp chip) frequency. i/o i/oclkin 52 phase shifted clock (input). this signal is connected to i/oclkout (i/o chip), and inputs a phase shifted clock signal. i/o i/oclkout 45 phase shifted clock (output). this signal is connected to i/oclkin (i/o chip), and outputs a phase shifted clock signal. i/o cpaddr0 cpaddr1 cpaddr2 cpaddr3 68 27 29 12 i/o chip to cp chip communication address (input). these 4 signals are connected to the corresponding i/oaddr0-3 pins (cp chip), and together provide addressing signals to facilitate cp to i/o chip communication. i/o ~cpwrite 2 i/o chip to cp chip communication write (input). this signal is connected to the ~i/owrite pin (cp chip) and provides a write strobe to facilitate cp to i/o chip communication. i/o cpcntrl0 cpcntrl1 cpcntrl2 cpcntrl3 20 36 22 63 i/o chip to cp chip communication control (mixed). these 4 signals are connected to the corresponding i/ocntrl0-3 pins (cp chip), and provide control signals to facilitate cp to i/o chip communication. i/o hostcmd 41 host port command (input). this signal is asserted high to write a host command to the chip set. it is asserted low to read or write a host data word to the chipset i/o hostrdy 37 host port ready/busy (output). this signal is used to synchronize communication between the dsp and the host. hostrdy will go low (indicating host port busy) at the end of a host command write or after the second byte of a data write or read. hostrdy will go high (indicating host port ready) when the command or data word has been processed and the chip set is ready for more i/o operations. all host port communications must be made with hostrdy high (indicating ready). typical busy to ready cycle is 82.5 usec..
14 ic pin name pin # description/functionality i/o ~hostread 51 host port read data (input). used to indicate that a data word is being read from the chip set (low asserts read). i/o ~hostwrite 47 host port write data (input). used to indicate that a data word or command is being written to the chip set (low asserts write). i/o ~hostslct 48 host port select (input). used to select the host port for reading or writing operations (low assertion selects port). ~hostslct must remain inactive (high) when the host port is not in use. i/o ~hostintrpt 44 host interrupt (output). a low assertion on this pin indicates that a host interrupt condition exists that may require special host action. i/o hostdata0 hostdata1 hostdata2 hostdata3 hostdata4 hostdata5 hostdata6 hostdata7 50 61 53 65 67 62 64 60 host port data 0-7 (bi-directional, tri-stated). these signals form the 8 bit host data port used during communication to/from the chip set. this port is controlled by ~hostslct, ~hostwrite, ~hostread and hostcmd. i/o cpdata4 cpdata5 cpdata6 cpdata7 cpdata8 cpdata9 cpdata10 cpdata11 18 5 6 7 8 17 3 1 i/o chip to cp chip data port (bi-directional). these 8 bits are connected to the corresponding data4-11 pins on the cp chip, and facilitate communication to/from the i/o and cp chips.. i/o ~cpreset 43 i/o chip set reset (input). when brought low this pin resets the i/o chip to its initial condition. reset should occur no less than 250 msec after stable power has been provided to the chip set. this signal should be connected to the ~reset pin of the cp chip, which in turn should be connected to the master reset signal. i/o vcc 4, 21, 25, 38, 55 i/o chip supply voltage pin. all of these pins must be connected to the supply voltage. supply voltage = 4.75 to 5.25 v i/o gnd 14, 15, 32, 49, 54, 66 i/o chip ground pin. all of these pins must be connected to the power supply return. ic pin name pin # description/functionality cp chip pinouts cp atrest1 atrest2 atrest3 atrest4 56 55 54 53 at rest indicator signals for axes 1-4 (output). a high level on this signal indicates the axis is at rest. a low signal indicates the axis is in motion. this signal is useful for driving amplifiers with an input bit to control running and holding torque. note: for mc1451a all 4 pins are valid. for MC1251A pins for axes 1 & 2 only are valid. for mc1151a pin for axis 1 only is valid. invalid axis pins can be left un connected. cp poslimit1 poslimit2 poslimit3 poslimit4 52 45 42 38 positive limit switch input for axis 1-4. these signals provide directional limit inputs for the positive-side travel limit of the axis. upon powerup these signals default to "active high" interpretation, but the interpretation can be set explicitly using the set_lmt_sense command. if not used these signals should be tied low for the default interpretation, or tied high if the interpretation is reversed. note: for mc1451a all 4 pins are valid. for MC1251A pins for axes 1 & 2 only are valid. for mc1151a pin for axis 1 only is valid. invalid axis pins can be left un connected.
15 ic pin name pin # description/functionality cp neglimit1 neglimit2 neglimit3 neglimit4 51 44 41 37 negative limit switch input for axis 1-4. these signals provide directional limit inputs for the negative-side travel limit of the axis. upon powerup these signals default to "active high" interpretation, but the interpretation can be set explicitly using the set_lmt_sense command. if not used these signals should be tied low for the default interpretation, or tied high if the interpretation is reversed. note: for mc1451a all 4 pins are valid. for MC1251A pins for axes 1 & 2 only are valid. for mc1151a pin for axis 1 only is valid. invalid axis pins can be left un connected. cp clkin 24 clock in (input). this pin provides the chip set master clock (fclk = 25.0 mhz) cp clkout 19 clock out (output). this pin provides a clock output which is 1/4 the clkin frequency. this pin is connected to the cpclk signals of the i/o chip and enc chip cp ~reset 17 master chip set reset (input). when brought low, this pin resets the chip set to its initial condition. reset should occur no less than 250 msec after stable power has been provided to the chip set. the master reset signal should be connected to this pin as well as the ~cpreset pin of the i/o chip cp i/ocntrl0 i/ocntrl1 i/ocntrl2 i/ocntrl3 16 18 68 67 i/o and enc chip to cp chip communication control (mixed). these signals provide various inter-chip control signals for the i/o and enc chips. for the i/o chip these four signals are connected to the corresponding cpcntrl0-3 pins. for the enc chip only i/ocntrl0 is used which is connected to the cpcntrl0 pin. cp data2 data3 data4 data5 data6 data7 data8 data9 data10 data11 58 57 50 49 46 43 40 39 36 35 cp to i/o and enc chip data4-11. (bi-directional). these pins are connected to the corresponding cpdata4-11 pins on the i/o chip, and on the corresponding cpdata2-11 pins on the enc chip. these signals are used to communicate between the cp and the i/o and enc chips. cp i/oaddr0 i/oaddr1 i/oaddr2 i/oaddr3 28 9 6 5 address0-3 (output). these signals provide various inter-chip address control signals for the i/o and enc chips. for the i/o chip these four signals are connected to the corresponding cpaddr0-3 pins. for the enc chip only i/oaddr0, i/oaddr2, and i/oaddr3 are used and they are connected to the corresponding pins on the enc chip. cp i/owrite 15 write (output). this pin is connected to cpwrite on the i/o and on the enc chip. it provides a control signal to the i/o and enc chip to facilitate communication between these chips and the cp chip cp vcc 4, 22, 33 cp chip supply voltage pin. all of these pins must be connected to the supply voltage. supply voltage = 4.75 to 5,.25 v cp gnd 3, 34 cp chip ground pin. all of these pins must be connected to the power supply return.
16 ic pin name pin # description/functionality enc chip pinouts enc quada1 quadb1 quada2 quadb2 quada3 quadb3 quada4 quadb4 30 36 17 18 27 28 5 29 quadrature a, b channels for axis 1 - 4 (input). each of these 4 pairs of quadrature (a, b) signals provide the position feedback for an incremental encoder. when the encoder is moving in the positive, or forward direction, the a signal leads the b signal by 90 degs. note: many encoders require a pull-up resistor on each of these signals to establish a proper high signal (check the encoder electrical specifications) note: for mc1451a-e all 8 pins are valid. for MC1251A-e pins for axes 1 & 2 only are valid. for mc1151a-e pins for axis 1 only are valid. invalid axis pins can be left unconnected. enc cpclk 7 enc chip clock (input). this signal is connected directly to the i/oclkout pin (cp chip) and provides the clock signal for the enc chip. the frequency of this signal is 1/4 the user- provided clkin (cp chip) frequency. enc encclkin 33 phase shifted clock (input). this signal is connected to encclkout (enc chip), and inputs a phase shifted clock signal. enc encclkout 6 phase shifted clock (output). this signal is connected to encclkin (enc chip), and outputs a phase shifted clock signal. enc cpaddr0 cpaddr2 cpaddr3 24 20 23 enc chip to cp chip communication address (input). these 3 signals are connected to the corresponding cpaddr0, 2, & 3 pins (cp chip), and together provide addressing signals to facilitate cp to enc chip communication. note: there is no cpaddr1 pin on the enc chip. enc ~cpwrite 13 enc chip to cp chip communication write (input). this signal is connected to the ~i/owrite pin (cp chip) and provides a write strobe to facilitate cp to enc chip communication. enc cpcntrl0 15 enc chip to cp chip communication control (input). this signal is connected to the i/ocntrl0 pin (cp chip), and provides control signals to facilitate cp to enc chip communication. enc cpdata2 cpdata3 cpdata4 cpdata5 cpdata6 cpdata7 cpdata8 cpdata9 cpdata10 cpdata11 22 19 9 31 41 42 44 1 12 2 enc chip to cp chip data port (bi-directional). these 10 bits are connected to the corresponding data2-11 pins on the cp chip, and facilitate communication to/from the enc and cp chips. enc vcc 3, 14, 16, 25, 35 enc chip supply voltage pin. all of these pins must be connected to the supply voltage. supply voltage = 4.75 to 5.25 v enc gnd 10, 21, 32, 34, 43 enc chip ground pin. all of these pins must be connected to the power supply return.
17 theory of operations trajectory profile generator (1-4) host i/o controller internal block diagram host interrupt data control motor output signals system registers (1-4) 1 8 5 host command poslimit 1/a neglimit 1/a ba 1/a 1/a quadrature decoder counter (1-4) pulse & direction generator (1-4) home input step direction 1/a 1/a 1/a overtravel inputs at rest miscellaneous signals 1/a host i/o encoder inputs i/o chip cp chip enc chip the above figure shows an internal block diagram for the mc1451a and mc1451a-e motion processors. the mc1451-series chipsets consist of two chips, an asic (application specific i.c.) called the i/o chip and a dsp (digital signal processor) called the cp chip. the mc1451-e series chipsets consist of these same two chips along with an additional asic chip called the enc chip. the function of the i/o asic is to perform host i/o as well as pulse generation. the function of the cp chip is to perform all motion computations. the function of the enc chip is to perform quadrature position decoding. the chipset supports up to four axes simultaneously. each axis provides programmable trajectory generation including electronic gearing, trapezoidal point-to-point, s-curve point to point, and a velocity contouring mode. the chipset calculates all trajectory information on a cycle-by-cycle basis. each cycle results in a new desired pulse rate based on the trajectory generator mode and the specified trajectory parameters. by feeding the resulting pulse rate to the pulse generating circuitry of the i/o asic at each cycle, continuous and smooth motion is achieved for all four axes. the i/o asic provides high speed pulse and direction generation appropriate for interfacing to a wide variety of standard stepper drivers. two pulse rate operating modes are provided, one which results in a pulse rate range of 0 - ~48,000 pulses per second (standard range), and one which results in a pulse rate range of 0 - ~1,500,000 pulses per second (high speed range). the encoder feedback, which is available through the optional enc chip, is updated at each chipset cycle. this information can be used by the host to check that the axis has achieved a desired position. additionally, the chipset can use the encoder information to automatically detect a motor stall condition while a move is ongoing. the following table summarizes the operational parameters of the mc1451-series chipsets.
18 mc1451-series chipset operational parameters available configurations: mc1451a 4 axis step and direction motion chipset MC1251A 2 axis step and direction motion chipset mc1151a 1 axis step and direction motion chipset mc1451a-e 4 axis step and direction motion chipset with quadrature input MC1251A-e 2 axis step and direction motion chipset with quadrature input mc1151a-e 1 axis step and direction motion chipset with quadrature input position range: -1,073,741,824 to 1,073,741,823 steps velocity range: -16,384 to 16,383 steps/cycle with a resolution of 1/65,536 steps/cycle acceleration range: s-curve profile: - 1/2 to + 1/2 steps/cycle with a resolution of 1/65,536 steps/cycle . all others: -16,384 to 16,383 steps/cycle with a resolution of 1/65,536 steps/cycle jerk range: -1/2 to +1/2 steps/cycle, with a resolution of 1/4,294,967,296 steps/cycle start velocity range -32,768 to +32,767 steps/cycle with a resolution of 1/65,536 steps/cycle (used with trapezoidal and velocity profile modes only) trajectory profile generator modes: s-curve (host commands final position, max velocity, max acceleration, and jerk) trapezoidal (host commands final position, max velocity, starting velocity, and acceleration) velocity contouring (host commands max velocity, starting velocity, acceleration) electronic gear (encoder position is used as position command for corresponding axis). (available only with mc1451a-e, MC1251A-e, mc1151a-e chipsets) electronic gear ratio range: 32768:1 to 1:32768 (negative and positive direction) motor output signals pulse and direction (1 each per axis) max. pulse rate standard speed range: 48.828 kpulses/sec high speed range: 1.5625 mpulses/sec encoder input signals: a, b quadrature signals (mc1451a-e, MC1251A-e, mc1151a-e chipsets only) maximum encoder input rate: 1.25 mcounts/sec (mc1451a-e, MC1251A-e, mc1151a-e chipsets only) encoder feedback modes: manual position read (host queries position) (mc1451a-e, MC1251A-e, mc1151a-e chipsets only) automatic stall detection (stall detected on-the-fly) (mc1451a-e, MC1251A-e, mc1151a-e chipsets only) stall detection counts/steps ratio range: 1/256 - 127 encoder counts/step (mc1451a-e, MC1251A-e, mc1151a-e chipsets only) cycle loop rate: 330 usec* # of limit switches per axis 2 (one for each direction of travel) per axis hardware control lines home signal (one per axis) limit switch (two per axis) at rest signal (one per axis, output to amplifier) # of host commands: 72 *exact time is 327.68 usec, 330 is an approximation trajectory profile generation the trajectory profile generator performs calculations to determine the target position, velocity and acceleration at each calculation cycle. these calculations are performed taking into account the current profile mode, as well as the current profile parameters set by the host. four trajectory profile modes are supported: - s-curve point to point - trapezoidal point to point - velocity contouring - electronic gear the commands to select these profile modes are set_prfl_s_crv (to select the s-curve mode), set_prfl_trap (to select the trapezoidal mode) set_prfl_vel (to select the velocity contouring mode) and set_prfl_gear (to select the electronic gear mode). throughout this manual various command mnemonics will be shown to clarify chipset usage or provide specific examples. see the host communications section for a description of host command nomenclature.
19 the profile mode may be programmed independently for each axis. for example axis #1 may be in trapezoidal point to point mode while axis #2 is in s-curve point to point. generally, the axis should be at rest when switching profile modes. under certain conditions however, switching into certain profile modes "on-the-fly" is allowed. see specific profile descriptions for details. s-curve point to point the following table summarizes the host specified profile parameters for the s-curve point to point profile mode: profile parameter representation & range units destination position signed 32 bits -1,073,741,824 to 1,073,741,823 steps maximum velocity unsigned 32 bits* (1/2 16 scaling) 0 to 1,073,741,823 steps/cycle max. accel. unsigned 16 bits ** (1/2 16 scaling) 0 to 32,767 steps/cycle 2 jerk unsigned 32 bits *** (1/2 32 scaling) 0 to 2,147,483,647 steps/cycle 3 * uses 1/2 16 scaling. chipset expects a 32 bit number which has been scaled by a factor of 65,536 from units of steps/cycle. for example to specify a velocity of 2.75 steps/cycle 2.75 is multiplied by 65,536 and the result is sent to the chipset as a 32 bit integer (180,224 dec. or 2c000 hex.). ** uses 1/2 16 scaling. chipset expects a 16 bit number which has been scaled by a factor of 65,536 from units of steps/cycle 2 . for example to specify an acceleration of .175 steps/cycle 2 , .175 is multiplied by 65,536 and the result is sent to the chipset as a 16 bit integer (11,469 dec. or 2ccd hex). *** uses 1/2 32 scaling. chipset expects a 32 bit number which has been scaled by a factor of 4,294,967,296 (2 32) from units of steps/cycle 3 . for example to specify a jerk value of .0075 steps/cycle 3 , .0075 is multiplied by 4,294,967,296 and the result is sent to the chipset as a 32 bit integer (32,212,256 dec. or 1eb8520 hex). use the following figure showing a typical s-curve velocity vs. time graph for reference in reading the next section: phase i. phase ii. phase iii. phase v. phase vi. phase vii. phase iv. s-curve profile the s-curve profile drives the axis at the specified jerk until the maximum acceleration is reached. (phase i). it will then drive the axis at jerk = 0 (constant acceleration) through phase ii. it will then drive the axis at the negative of the specified jerk though phase iii, such that the axis reaches the specified maximum velocity with acceleration = 0. this completes the acceleration phase. at the end of the acceleration phase of the move, the velocity will be constant, and the acceleration will be 0. at the appropriate time, the profile will then decelerate (phases v, vi and vii) symmetrically to the acceleration phase such that it arrives at the destination position with acceleration and velocity = 0. there are several conditions where the actual velocity graph of an s- curve motion will not contain all of the segments shown in the above figure. for example, if the max. acceleration is not reached before the "half-way" point to the max. velocity, then the actual velocity profile will not contain a phase ii or a phase vi segment (they will have a duration of 0 cycles). such a profile is shown below: phase i. phase iii. phase v. phase vii. phase iv. s-curve that doesn't reach max. acceleration another such condition is if the position is specified such that max. velocity is not reached. in this case there will be no phase iv, and there may also be no phase ii and vi, depending on where the profile is "truncated". while the s-curve profile is in motion, the user is not allowed to change any of the profile parameters. the axis must be at rest before a new set of profile parameters can be executed. if parameters are changed during motion then a 'command error'
20 will occur, and all new parameters will be ignored except the position. see the section of this manual entitled "command error" for more information.. before switching to the s-curve point to point profile mode, the axis should be at a complete rest. when the axis is in the s-curve profile mode, the set_max_acc command should be used to load the max. acceleration value. the alternate acceleration loading command set_acc can not be used. trapezoidal point to point the following table summarizes the host specified profile parameters for the trapezoidal point to point profile mode: profile parameter representation & range units destination position signed 32 bits -1,073,741,824 to 1,073,741,823 steps maximum velocity unsigned 32 bits (1/2 16 scaling) 0 to 1,073,741,823 steps/cycle starting velocity unsigned 32 bits, (1/2 16 scaling) 0 to 1,073,741,823 steps/cycle accel. unsigned 32 bits (1/2 16 scaling) 0 to1,073,741,823 steps/cycle 2 in the trapezoidal point to point profile mode the host specifies a destination position, a maximum velocity, a starting velocity, and an acceleration. the trajectory is executed by accelerating at the commanded acceleration, beginning at the starting velocity, to the maximum velocity where it coasts until decelerating such that the destination position is reached with the axis at rest (zero velocity). if it is not possible to reach the maximum velocity (because deceleration must begin) then the velocity profile will have no "coasting" phase. the acceleration rate is the same as the deceleration rate. a new maximum velocity and destination position can be specified while the axis is in motion. when this occurs the axis will accelerate or decelerate toward the new destination position while attempting to satisfy the new maximum velocity condition. before switching to the trapezoidal point to point profile mode, the axis should be at rest. when in trapezoidal point to point profile mode, to change the acceleration, the axis must come to a complete stop. after this has occurred, a new acceleration value can be loaded. if the acceleration parameter is changed during motion then a 'command error' will occur, and all updated parameters will be ignored except the position. see the section entitled 'axis status for more informaton' on command errors. the starting velocity can not be changed while the axis is in motion. the following figure shows a velocity profile for a typical point to point trapezoidal move, along with a more complicated move involving on the fly changes to the maximum velocity and the destination position. simple trapezoidal mode motion vel. time complex trapezoidal mode motion chan g e max velocity change destination position vel. time trapezoidal profile with non-zero starting velocity change max velocity change destination position vel. time starting velocity velocity contouring the following table summarizes the host specified profile parameters for the velocity contouring profile mode: profile parameter representation & range units maximum velocity unsigned 32 bits (1/2 16 scaling) 0 to 1,073,741,823 steps/cycle starting velocity unsigned 32 bits, (1/2 16 scaling) 0 to 1,073,741,823 steps/cycle acceleration signed 32 bits* (1/2 16 scaling) -1,073,741,824 to 1,073,741,823 steps/cycle 2 * negative numbers using 1/2 16 scaling are handled no differently than positive numbers. for example if an acceration value of -1.95 steps/cycle 2 is desired, -1.95 is
21 multipled by 65,536 and the result is sent to the chipset (- 127,795 dec. or fffe0ccd hex). in this profile mode the host specifies two parameters, the commanded acceleration, and the maximum velocity. the trajectory is executed by continuously accelerating the axis at the commanded rate until the max. velocity is reached, or until a new acceleration command is given. the maximum velocity value must always be positive. motion direction is controlled using the acceleration value. positive acceleration values result in positive motion, and negative values result in negative motion. there are no restrictions on changing the profile parameters on the fly. note that the motion is not bounded by position however. it is the responsibility of the host to generate acceleration and max. velocity command values which result in safe motion, within acceptable position limits. the following figure shows a typical velocity profile using this mode. example velocity contouring mode change max velocity change acceleration vel. time change max velocity and acceleration there are no restrictions on switching the profile mode to velocity contouring while the axis is in motion. the starting velocity can not be changed while the axis is in motion. electronic gear the following table summarizes the host specified profile parameters for the electronic gear profile mode: profile parameter representation & range units gear ratio signed 32 bits* (1/2 16 scaling) -1,073,741,824 to +1,073,741,823 - * for example to specify a gear ratio of +1.5 to 1 the value 1.5*65,536 is sent to the chipset (98,304). alternatively to set the gear ratio as -11.39 to 1 the value -11.39*65,536 is sent (- 746,455 dec. or fff49c29 hex.). in this profile mode, the host specifies one parameter, the gear ratio. the target position is generated by applying the specified gear ratio to the encoder position of the same axis, multiplying by the specified gear ratio and outputting the corresponding number of pulses. in this way the output of the pulse and direction generator will precisely track the input encoder position factored by a programmable gear ratio. this can be useful in many applications where continuous synchronization with an external mechanism is important. the following figure shows the arrangement for encoders and motor drives in a typical electronic gearing application with the mc1451a master encoder motor pulse & direction amplifier mc1451-e only one of four axes shown the total number of geared axes supported per chipset is equal to the number of motor axes. for each motor axes the encoder input for the same axis is used as the master position command. in addition these master/slave combinations are fixed, with the encoder for axis 1 driving the axis 1 pulse and direction generator, and the encoder for axis 2 driving the axis 2 pulse and direction generator. there are no restrictions on changing the gear ratio when the axis is in motion, although care should be taken to select ratios such that safe motion is maintained. there are also no restrictions on changing to this profile mode while the axis is in motion. trajectory control normally each of the above trajectory modes will execute the specified trajectory, within the specified parameter limits, until the profile conditions are satisfied. for example for the point-to-point profile modes this means that the profile will move the axis until the final destination position has been reached, at which point the axis will have a velocity of zero. halting the trajectory in some cases however it is necessary to halt the trajectory manually, for safety reasons, or simply to achieve a particular desired profile. this can be accomplished using one of two methods; abrupt stop, or smooth stop. abrupt stops are accomplished using the stop command. this command instantaneously stops the trajectory generator by setting the velocity of the axis to zero. this control mode is typically used during an emergency stop, when no deceleration phase is desired. smooth stops are accomplished using the smooth_stop command. this command causes the trajectory to decelerate at a rate equal to the
22 specified acceleration rate, until a velocity of zero is reached. in addition the form of the deceleration is symmetric to the acceleration phase. for example if the profile mode is s-curve, and a smooth_stop command is given, the profile will decelerate in a manner exactly equal and opposite to the acceleration phase. the stop command functions in all profile modes; s-curve point- to-point, trajectory point-to-point, velocity contouring, and electronic gear. the smooth_stop functions in s-curve point-to-point, trajectory point-to-point, and velocity contouring profiling mode. it does not function in electronic gear mode. caution should be exercised when using the stop command due to the large and abrupt changes in motion that may occur. motion complete status to simplify the programming of a complete motion system it is convenient to have the motion chipset indicate when a particular profile move has been completed. this function is provided by two status bits in the chipset's status word (see the section of this manual entitled "axis status " for more information on the axis status word). these two bits are called the motion complete bit, and the in-motion bit. the motion complete bit is controlled interactively by the chipset and the host. after a motion has completed, the chipset sets the motion complete bit on. the host may then poll this bit to determine that motion is complete, or if desired, the host can program the chipset to automatically signal when the motion is complete (using an interrupt). in either case once the host has recognized that the motion has been completed the host clears the motion complete bit, enabling the bit to indicate the end of motion for the next move. the following list shows the conditions that will cause the motion complete bit to occur: - profile has reached the destination position (point-to-point profile modes only) - axis trajectory reaches a velocity of zero and the current velocity command is zero - smooth_stop command is given and axis trajectory reaches a velocity of zero - stop command is given - limit switch condition occurs the in-motion bit is similar to the motion complete bit except that it continuously indicates the status of the axis without interaction with the host. in addition this bit is used exclusively for polled mode operations. it can not cause an interrupt to the host to be generated. the motion complete and the in-motion indicator bits function in the s-curve point-to-point, trapezoidal point-to-point, and velocity contouring profile modes only. they do not function when the profile mode is set to electronic gearing. the motion complete and in-motion bits indicate the state of the trajectory generator, not the actual motor. even if the trajectory generator has completed a motion, the actual axis position may or may not be at rest depending on motor stability, and other system conditions. parameter loading & updating various profile & motor control parameters must be specified by the host for an axis to be controlled in the desired manner. to facilitate precisely synchronized motion, these parameters and related control commands are loaded into the chip using a double-buffered scheme. in this scheme, the parameters and action commands being loaded are not acted upon (copied from the double-buffered to the active registers) until an update signal is given. this update signal can consist of either a "manual" update command or one of several conditional breakpoints. whichever update method is used, at the time the update occurs, all of the double buffered registers and commands will be copied to the active registers. conversely, before the update occurs, loading the double-buffered registers or executing the double buffered commands will have no effect on the system behavior. the double buffered registers are listed below. register name command to set destination position set_pos maximum velocity set_vel acceleration set_acc maximum acceleration set_max_acc jerk set_jerk ratio set_ratio buffered motor command set_buf_mtr_cmd the double-buffered commands are: stop, smooth_stop, and synch_prfl. manual update there are two methods of manually updating the double-buffered parameters & commands, one for a single axis instantaneous update and one for a multiple-axis update. the single axis instantaneous update, which is specified using the update command, forces the parameters for the current axis to be updated at the next cycle. the multiple axis instantaneous update, which is specified using the multi_update command, causes multiple axes to be updated simultaneously. this can be useful when synchronized multi-axis profiling is desired. this command takes a 1 word argument which
23 consists of a bit mask, with 1 bit assigned to each axis. executing this command has the same affect as instantaneously switching to each desired axes, and executing an update command. breakpoints a breakpoint is a convenient way of programming a profile or other double-buffered parameter change upon some specific condition. there are two types of breakpoints, those that have a 32-bit comparitor value associated with them and those that do not. for those that have the comparitor, a 32-bit comparitor value is loaded into the breakpoint compare register first, and then one of the breakpoint conditions is specified. for those breakpoint modes without associated comparitor values only the breakpoint condition needs to be specified. the double-buffered registers and commands will be updated upon satisfaction of the specified breakpoint condition. here is a list of all of the available breakpoint conditions. positive target position breakpoint a 32 bit position breakpoint can be specified which will result in the parameters being updated when the current target position (the instantaneous desired axis position output from the profile generator) equals or exceeds the specified breakpoint value. this breakpoint is set using the set_pos_brk command. negative target position breakpoint a 32 bit position breakpoint can be specified which will result in the parameters being updated when the current target position (the instantaneous desired axis position output from the profile generator) equals or is less than the specified breakpoint value.this breakpoint is set using the set_neg_brk command. positive actual position breakpoint a 32 bit position breakpoint can be specified which will result in the parameters being updated when the current actual position (the instantaneous position of the actual axis hardware) equals or exceeds the specified breakpoint value.this breakpoint is set using the set_actl_pos_brk command. negative actual position breakpoint a 32 bit position breakpoint can be specified which will result in the parameters being updated when the current actual position (the instantaneous position of the actual axis hardware) equals or is less than the specified breakpoint value.this breakpoint is set using the set_actl_neg_brk command. time breakpoint a 32 bit time breakpoint can be specified which will result in the parameters being updated when the # of cycles executed since chip set reset (the current chip set time) is equal to the time breakpoint value.the # of cycles continuously increases until it rolls over from 2 32 - 1 back to 0.the time breakpoint is set using the set_time_brk command. motion complete breakpoint a breakpoint can be specified which will result in the parameters being updated when the previous motion has been completed (motion complete bit is set). when using this breakpoint no 32 bit compare value is required. external breakpoint a breakpoint can be specified which will result in the parameters being updated when the home signal of the corresponding axis becomes active (low). when using this breakpoint no 32 bit compare value is required. this breakpoint is useful whenever it is desired that an external signal starts, stops, or otherwise modifies the profile movement. normally, whenever one of these conditions has been programmed and the condition occurs, the double-buffered parameters will automatically be shifted to the active registers. there is a mechanism to disable this "automatic update upon breakpoint" however. this is discussed in the next section. the above breakpoint modes are particularly useful during multi-axis motion. this is because the next profile commands (set of host- specified trajectory commands) can be pre-loaded and activated at the precise position or time required, with no delay incurred to send an update or load parameters command. after a breakpoint condition has been satisfied it is no longer active. to set up another breakpoint condition, a new one must be explicitly set by the host. the double-buffered registers that are shifted to the active registers do not change upon being shifted, only the active registers change. except for the multi_axis command, parameter loading and updating is controlled individually for each axis. in addition each axis has a separate 32-bit breakpoint register, and can be set to various individual breakpoint conditions. external breakpoints and homing by connecting a home input sensor to the home signal input of the mc1451-series chipsets it is possible to cause the chipset to halt a motion at the moment it receives the home signal. this capability makes it ideal for performing a home sequence. the following host i/o sequence illustrates this: get_home ; check to make sure axis not already at ; home. if so, then a 'reverse' move must ; be made to retract axis from home switch. ; this ?reversing? sequence is not ; indicated here for simplicity sake set_pos 12345 ; load home move parameters set_vel 23456 set_acc 345 update ; start home move set_ext_brk ; initiate external breakpoint mode
24 stop ; load (but do not update) a stop command this sequence will start a homing move which will stop as soon as the axis encounters the home switch. as is the case for all of the breakpoint modes, the external breakpoint can not only be use to stop an ongoing move, but to start or otherwise modify a move as well. this flexibility makes it well suited for applications such as cut-on-the-fly where externally-initiated motions are required. disabling automatic profile update normally, when a breakpoint condition has been satisfied, it causes the profile and other double-buffered parameters to be automatically updated. for certain types of profiles however, it may be desirable to still use the breakpoint mechanism (to allow it to generate a host interrupt for example), but not to have the profile update. whether the profiles are automatically updated or not for a given axis is controlled by the commands set_auto_update_on and set_auto_update_off. when auto update is set to on, the breakpoint/profile mechanism behaves as described above. when set to off, upon a breakpoint condition, no profile update will occur. when in this mode the only way to update the profile is to use the update command or the multi_update command. travel limit switches the mc1451-series chipsets support motion travel limit switches that can be used to automatically recognize an "end of travel" condition. the following figure shows a schematic representation of an axis with travel-limit switches installed, indicating the "legal" motion area and the over-travel regions. legal travel region positive over-travel region negative over-travel region positive limit switch negative limit switch there are two primary services that the mc1451a provides in connection with the over-travel limit switch inputs: 1) the host can be automatically notified that an axis has entered an over-travel condition, allowing the host to take appropriate special action to manage the over-travel condition. 2) upon entering an over-travel condition, the trajectory generator will automatically be halted, so that the motor does not travel further into the over travel region. to recover from an over-travel condition the corresponding status bits in the status word should be reset (see the section of this manual on axis status for details on resetting status word bits). once this has been performed the host can command a trajectory move to bring the axis out of the over-travel region. the over-travel detector is 're-armed' when the axis exits the over travel condition. only one over-travel signal can be processed at a time. for example if the negative over travel switch becomes active, the corresponding status bits must be cleared, and the axis moved into the legal travel range before a positive over travel switch will be recognized. axis timing each axis of the mc1451-series chipsets receives a "time slice" of the available computation power of the cp chip. the amount of time required for the chipset to perform one complete pass of calculations for all of the axes is known as the chipset cycle time. this chipset cycle time is important to the host processor because it determines the rate at which profile trajectories are updated. the cycle time is the same for all mc1451-series chipsets. the cycle time value is 330 usec*. all velocities, accelerations, and jerk values are related to this cycle time via the various trajectory generator modes that generate axis motion. * exact cycle time is 327.68 usec, 330 is an approximation. for example, to determine the velocity of a given axis in units of steps/second, we use the conversion ration 1 sec = 3,030 cycles (3,030 cycles/sec = 1 cycle every 330 usec). therefore if the desired maximum velocity to be provided to the chipset is (for example) 12,345 steps/sec we convert to units of steps/cycle by dividing by 3,030, giving a value of 4.07425. the value we send to the chipset using the set_vel command (see host command section for details) would be 65,536 times this amount since the velocity parameter uses 1/2 16 scaling. therefore we would send a value of 267,010 to the chipset. as an additional example, to determine the acceleration of a given axis in units of steps/second 2 , we again use the conversion ratio 1 sec = 3,030 cycles, however we must take into account the conversion to cycles 2 (not cycles). therefore if the desired acceleration to be provided to the chipset is (for example) 67,890 steps/sec 2 we convert to units of steps/cycle 2 by dividing by 3,030 2 (or 9,180,900), giving a value of .00739469. the value we send to the chipset using the set_acc command (or set_max_acc command if we are in s- curve mode) would be 65,536 times this amount since this parameter
25 uses 1/2 16 scaling. therefore we would send a value of 485 (decimal) to the chipset. all mc1451-series chips have the same cycle time (330 usec), which is not adjustable by the host. host communications electrical interface the mc1451a communicates to the host processor via an 8-bit bi- directional data port. 5* additional signals are used to synchronize communication operations. the following table gives a brief description of the control signals used during host communication: signal description ~hostslct selects the host port for operations ~hostwrite writes a byte of data (or a command) to the chip set. a write operation can only occur when the ready/busy line indicates ready ~hostread reads a byte of data from the chip set. a read operation can only occur when the ready/busy line indicates ready hostcmd is asserted in combination with the hostwrite signal when a command is being written to the chip set. hostrdy indicates to the host that the host port is available for operations *an additional signal, hostintrpt is provided to the host. this signal is not used directly in communication operations, and is discussed in a separate section three types of hardware communication operations are possible between the host processor and the chip set; command write, data write and data read. each of these operations transfers information to or from the chip set, and is coordinated using the 5 control signals listed above. a command write operation involves the transfer of a single byte command to the chip set. to perform a write command operation, the desired command is loaded on the 8 data pins and ~hostslct and ~hostwrite are brought low, while hostcmd is brought high. a data write operation involves the transfer of two bytes of data (1 word) to the chip set. to transfer the first byte (high byte), the desired data byte is loaded on the 8 data bits and ~hostslct, ~hostwrite and hostcmd are brought low. the hostwrite signal is then brought high to end the transfer of the first byte. to transfer the second byte (low byte), the desired data byte is loaded on the 8 data bits and ~hostslct, ~hostwrite and hostcmd are again brought low. a data read operation involves the transfer of two bytes of data (1 word) from the chip set to the host. to transfer the first (high) byte, ~hostslct, ~hostread,and ~hostcmd signals should be brought low, and the data should be read from the 8 bit data bus. the hostread signal is then brought high to end the transfer of the first byte. to transfer the second (low) byte, ~hostslct, ~hostread, and ~hostcmd are again brought low and the data should be read from the data bus. before any command write, data write or data read operations are performed, the user must check that the hostrdy signal indicates ready. after a command write, or after the second byte of each read or write, this signal will go busy. it will return to ready when the chipset can receive another i/o operation. for more specific electrical information on the host interface operations, see the pin descriptions and the timing diagram. packet format all communications to/from the chip set take the form of packets. a packet is a sequence of transfers to/from the host resulting in a chip set action or data transfer. packets can consist of a command with no data (dataless command), a command with associated data that is written to the chip set (write command) or a command with associated data that is read from the chip set (read command). all commands with associated data (read or write) have either 1 or 2 words of data. see the host commands section for more information on the length of specific commands. if a read or a write command has 2 words of associated data (a 32 bit quantity) the high word is loaded/read first, and the low word is loaded/read second. the following charts show the generic command packet sequence for a dataless command, a write command, and a read command. the hardware communication operation described in the previous section to accomplish each type of transfer is shown in the left column. dataless command time --> --> --> --> cmd write: cmd byte data write: data read: [pkt checksum] write command time --> --> --> --> cmd write: cmd byte data write: word 1 [word 2] data read: [pkt checksum]
26 read command time --> --> --> -> cmd write: cmd byte data write: data read: word 1 [word 2] [pkt checksum] [ ] indicates an optional operation packet checksum the above charts show that at the end of each packet, a checksum word is available for reading. although host to chip set i/o operations are extremely reliable, for critical applications the checksum can provide a further reliability enhancement (particularly in very noisy electrical environments, or when the communication signals are routed over a media that may have data losses such as a serial link). this checksum consists of a 16-bit sum of all previous communications that have occurred for the associated command. the command byte is included in the low byte of the 1st checksum word (high byte set to 0). data words are added as is to the checksum value. for example if a set_vel command (which takes two 16-bit words of data) was sent with a data value of fedcba98 (hex), the checksum would be: 0011 (code for set_vel command) + fedc (high data word) + ba98 (low data word) ---------- 1b985 check sum = b985 (keep bottom 16 bits only) reading the checksum is optional. recovering from an incorrect packet transfer (bad checksum) will depend on the nature of the packet. read and write operations can always be re-transmitted, while a command resulting in an action may or may not be re-tried, depending on the command and the state of the axis. illegal commands when the mc1451a receives a command that is illegal (see host command summary for listing of illegal commands), it will signal this condition by returning a checksum of 0, regardless of the illegal command value or the value of any subsequent data written to the host as part of the illegal command sequence. in this manner the host processor checksum can be used to detect communication problems as well as an illegal command sequence, resulting in a simplification of the host processor communication code. command errors if a command, or command sequence is sent to the chipset that is not valid at a given operating condition of the chipset, but is valid at other times, this command is said to cause a command error. when a command error occurs this condition is indicated by the 'command error' bit of the axis status word (see the section of this manual entitled "axis status" for more information on the axis status word). the following list indicates the command sequences that result in a command error: - changing and updating the acceleration (set_acc, update) when in the trapezoidal profile mode and when the axis trajectory is still in motion. - changing and updating either the velocity, max acceleration, or jerk (set_vel or set_max_acc or set_jerk, and then update) when in the s-curve profiling mode and when the trajectory is in motion - commanding a move in the same direction as a limit switch condition when in trapezoidal or s-curve profile mode. for example if travelling in the positive direction and a limit switch is encountered, a further move in the positive direction will be ignored and a command error will be generated. once a command error occurs the command error bit is set, and the illegal profile changes are ignored. if additional parameters are also changed such as position or any filter values as part of the same update command then these parameters will not be rejected at the time of the update, and they will become the active values. axis addressing most chip set commands alter the parameters or the operating state of one axis at a time. in this way each axis can be controlled separately. to facilitate efficient communication for these types of commands, the chip set maintains the concept of a current axis number, which can be set explicitly by the host. after setting the current axis number, commands that are addressed to the current axis will automatically operate on this axis. the current axis number will stay the same until it is changed by one of the commands that alter the current axis number. as an illustration of this, the following sequence sets the current axis to #2, updates some motion parameters, and switches to axis #1, and alters some other motion parameters. set_2 -> sets current axis to #2 set_pos 02345678 -> loads current axis (#2) dest. position with value of 2345678 update - > causes the loaded value to take effect (axis # 2)
27 set_1 -> sets current axis to #1 set_accel 00001234 -> loads current axis (#1) with acceleration value 1234 update - > causes the loaded value to take effect (axis # 1) axis status the mc1451a supports a status word for each axis, which contains various information about the state of the axis. the status word is a 16-bit register which can be queried using the command get_status. it contains the following information (bit encoding is 0 = lsb, 15 = msb): bit # description 0 motion complete flag. this bit is set (1) when the axis trajectory has completed. this flag is only valid for the s- curve and trapezoidal, and velocity contouring profile modes. 1 wrap-around condition flag. this bit is set (1) when the axis has reached the end of its travel range,and has wrapped to the other end of the travel range. specifically, when travelling in a positive direction past the position +1,073,741,823, the axis will wrap to position - 1,073,741,824, and vice-versa. 2 breakpoint reached flag. this bit is set (1) when one of the breakpoint conditions has occurred. 3 index pulse received flag. this bit is set (1) when an index pulse has been received. 4 motion error flag. this bit is set (1) when the position error is exceeded (see filter section for more information). this bit can only be reset when the axis is no longer in a motion error condition 5 positive limit switch flag. this bit is set (1) when the positive limit switch goes active. 6 negative limit switch flag. this bit is set (1) when the negative limit switch goes active. 7 command error flag. this bit is set (1) when a command error has occurred. 8 motor on/off status (1 indicates motor is on, 0 indicates motor is off). 9 axis on/off status (1 indicates on, 0 indicates off). 10 in-motion flag. this bit continuously indicates whether or not the axis trajectory is in motion. this bit is set (1) when the axis is in motion, and cleared (0) when the axis trajectory is not in motion. 11 reserved (may contain 0 or 1) 12,13 current axis # (13 bit = high bit, 12 bit = low bit). therefore axis encoding is as follows: bit 13 bit12 axis 001 012 14,15 reserved (may contain 0 or 1) bits 8-10 and 12-13 indicate continuous status information, and do not need to be reset by the host. bits 0-7 indicate various status flags that can also generate host interrupts (see next section for details). these flags are set by the chipset, and must be reset by the host (they will not be cleared by the chipset). bits 0-7 of the status word operate using a set/reset mechanism. these flags are set by the chipset, and must be reset by the host. if they are not reset by the host they will remain active indefinitely. miscellaneous mode status word there is another status word available that indicates the current status of various mode settings or conditions. the miscellaneous mode status word is a 16-bit register which can be queried using the command get_mode. it contains the following information (bit encoding is 0 = lsb, 15 = msb): bit # description 0-6 used internally by chipset. contains no host-useable information. 7 stop on motion error mode flag. this bit indicates the state of the stop on motion error mode, set by the commands set_auto_stop_on and set_auto_stop_off. a 1 indicates auto stop is on (-e version chipset only). 8 used internally by chipset. contains no host-useable information 9 pulse generator mode. this bit indicates the mode of the pulse generator, set using the commands set_output_stndrd, and set_output_high. a one (1) indicates the generator is set for high speed output 10 auto update flag. this bit indicates the state of the auto update mode, set using the commands set_auto_update_on and set_auto_update_off. a 1 indicates that auto update is disabled. 11,12 trajectory generator mode. this bit indicates the mode of the trajectory generator, set using the commands set_prfl_s_crv, set_prfl_trap, set_prfl_vel, set_prfl_gear. the encoding is as follows: bit 12 bit11 profile mode 0 0 trapezoidal 0 1 velocity contouring 10s-curve 1 1 electronic gear 13-15 phase #. these bits indicate the current phase # of the s- curve profile (only valid if the current profile mode is s- curve). a 0 indicates that the profile has not started yet, and phases 1-7 indicate the phase #'s corresponding to the phases described in the s-curve profiling mode. the 3-bit phase # word is encoded bit 15 msb, and bit 13 lsb.
28 host interrupts in many situations, during axis motion or at other times, it is useful to have the chip set signal the host that a special condition has occurred. this is generally more convenient and efficient than having the host poll the chip set for various possible conditions. this chip set-initiated signal is known as a host interrupt. several chip set conditions may occur that can result in the generation of a host interrupt. whether these conditions in fact interrupt the host is controllable for each condition and for each axis. the mechanism used to control each condition is a mask register. the interrupt conditions correspond to bits 0-7 and 11 of the status register (the axis event flags), described in the previous section. these conditions are summarized below: motion complete occurs when the profile is complete wrap-around condition occurs when the axis position wraps. break point reached occurs when a breakpoint condition has been satisfied. position capture received occurs when the encoder index pulse or home pulse has been captured motion error occurs when the maximum position error set for a particular axis has been exceeded negative limit switch occurs when the negative over-travel limit switch is active positive limit switch occurs when the positive over travel limit switch is active command error occurs when a host communication sequence causes a command error condition when one of these interrupt conditions occur for a particular axis, the host interrupt line is made active. at this point the host can respond to the interrupt (although the current i/o operation should be completed), but it is not required to do so when the host has completed processing the interrupt, it sends a command that clears the interrupt conditions for a particular axis, the rst_intrpt command. this command includes a "clearing mask" as an argument, which allows one interrupt to be cleared at a time. bits cleared by the rst_intrpt command are the exact same bits as those cleared by non-interrupt commands such as rst_status and clr_status. in each case the bits affected are the status word bits 0-7. interrupts occur for a particular axis. if the user is currently programming parameters on axis #1 and an interrupt occurs on axis #2, it is the host's responsibility to change axis number to 2 if this is the appropriate response to an interrupt on that axis. if more than one axis interrupt condition becomes active at exactly the same time, then the axis with the lowest number will generate the interrupt first. the following host commands are used in managing interrupts: (see host command reference for complete information) set_intrpt_mask sets the interrupt conditions mask get_intrpt returns the status of the interrupting axis (including the interrupting axis #). the current axis # is not altered by this command set_i changes the current axis # to the interrupting axis. this is a 'time saver' command which performs the dual operations of getting the interrupting axis # and switching to that axis in one command. rst_intrpt clears particular conditions for the interrupting axis. the current axis # is not altered by this command. to facilitate determining the nature of the interrupt, the status register holds the axis #, allowing the interrupting axis # to be determined. the following represents a typical sequence of interrupt conditions and host responses. assume for the purposes of this example that an axis (not the current axis) has hit a "hard stop" causing an essentially instantaneous motion error, as well as a positive limit switch trip. also assume that the interrupt mask for this axis was set so that either motion errors or limit switch trips will cause an interrupt event host action motion error & limit switch trip generates interrupt host sends set_i command interrupting axis status returned by chipset, current axis set to interrupting axis. host detects motion error & limit switch flags are set, recovers from motion error first. host sends: rst_intrpt 00ef, clearing motion error bit chipset clears motion error bit and disables host interrupt line - because limit switch interrupt is still active chipset immediately generates interrupt for limit switch host sends set_i command interrupting axis status returned by chipset, current axis set to interrupting axis. host detects that neg. limit switch trip flag is set, performs recovery for limit switch trip. host sends rst_intrpt 00df, clearing pos. limit switch bit chipset clears limit switch bit and disables host interrupt line - at the end of this sequence, all status bits are clear, the interrupt line is inactive, and no interrupts are pending.
29 note that it is not required to process multiple interrupts separately (as is shown in the example). it is perfectly valid to process 2 or more interrupt conditions at the same time, and to then send a rst_intrpt command with a mask that clears multiple bits at the same time. the rst_intrpt and get_i commands are only effective when there is an interrupt present. if no interrupt is present than alternative 'polled-mode' commands such as rst_status or get_status should be used. pulse & direction signal generation for each axis two signals are provided which determine the desired axis position at any given moment. these two signals are the pulse signal, and the direction signal. the pulse signal output by the chipset consists of a precisely-controlled series of individual pulses each of which represents a desired increment of movement. this signal is always output as a square wave pulse train (50 % duty cycle regardless of pulse rate). a step, or pulse, is considered to have occurred when the pulse signal transitions from a high to a low output value the direction signal is synchronized with the pulse signal at the moment each pulse transition occurs. the direction signal is encoded such that a high value indicates a positive direction pulse, and a low value indicates a negative direction pulse. the mc1451-series of chipsets supports two separate pulse rate modes, known as the standard speed mode, which can output pulses at up 48.8 ksteps per second, and the high speed mode, which can output pulses at up to 1.5625 megasteps/sec. for full-step and half-step applications, as well as pulse and direction applications which will have a maximum velocity of ~ 48 ksteps/sec, the standard speed range should be used. for applications which require pulse rates higher than 48 ksteps/sec the high speed range should be used. to select the standard speed mode use the command set_output_stndrd. to select the high speed mode use the command set_output_high. speed range is selectable separately for each axis. to read back the current speed range setting, use the get_mode command, bit # 9. the pulse counter is designed such that a step occurs when the pulse signal transitions from high to low. systems that use step motor amplifiers that interpret a pulse as a low to high transition should insert an inverter at the pulse signal output from the mc1451a chipset to insure proper step counting. pulse generation control the rate of pulse output is usually determined by the particular trajectory profile parameters being requested by the host processor. in addition to the trajectory profile however there is separate method of enabling and disabling pulse generation. this method is known as 'motor control' and provides an on/off pulse generator control mechanism. the command to enable pulse output is mtr_on and the command to disable pulse generation is mtr_off. mtr_off causes the trajectory generator to immediately discontinue further pulse generation until a mtr_on command is given. as long as the motor is in the off state any further trajectory commands will have no effect until the motor is turned on. the current motor status (on or off) can be read back using the axis status word (bit # 8). it the motor is turned on by the host (mtr_on command) the motor will stay at rest until a new trajectory move is loaded and initiated. in addition to manually turning the motor output on and off it possible for the chipset to automatically turn the motor off during a motion. this can occur if the chipset detects a motion error condition while the auto-stop feature is enabled. see the section of this manual below entitled "stall detection" for more information. at rest indicator in addition to the standard pulse and direction output signals the mc1451-series chipsets provide an additional output for each axis known as the atrest signal which indicates when the trajectory generator is in motion. this signal can be useful when interfacing with amplifiers that support a separate torque output level for the stepper during motion as when the motor is not moving (holding). this feature is enabled and operational automatically at all times. it does not need to be initiated by the host processor. encoder position feedback the mc1451a-e version of the mc1451a chipset has the capability of receiving quadrature position data so that the current location of the motor can be determined. to receive quadrature information the mc1451a chipset must have the optional 'enc' chip installed. the mc1451a-e supports two encoder signals per axis, the a quadrature channel and the b quadrature channel. up to four axes are supported. for a given chipset the number of encoder channels supported is equal to the number of pulse and direction channels. for example the MC1251A-e supports 2 sets of pulse and direction channels and 2 sets of a, b quadrature signals.
30 each quadrature channel consists of a square wave offset 90 deg. from the other. positive motion consists of the a channel leading the b channel by 90 deg., and negative motion consists of the a channel lagging the b channel by 90 deg. for each full phase of one channel, four resolved quadrature counts will occur, resulting in a 4 to 1 resolution enhancement over the basic channel resolution. to enhance reliability of the received encoder information the mc1451 provides digital filtering of the quadrature data lines (a and b quadrature count) as well as the index and home signals. for all of these signals a valid high or low condition is recognized only when the input signal has been maintained for 3 clock cycles of 160 nsec each (total required duration of 480 nsec) although this digital filtering scheme can increase the overall reliability of the quadrature data, to achieve the highest possible reliability additional techniques may be required, such as differential line drivers/receivers, or analog filtering. stall detection the mc1451a-e chipset supports two primary operations in connection with encoder feedback: - readback of current axis position - automatic stall detection. readback of the current encoder position is accomplished using the get_actl_pos command. this command allows the user to confirm that the stepper axis has achieved a particular location. the get_actl_pos command can be used at any time, whether the axis is in motion or not. automatic stall detection allows the chipset to detect when the step motor has lost steps during a motion. this typically occurs when the motor encounters an obstruction, or otherwise exceeds its rated torque specification. automatic stall detection operates continuously once it is initiated. the current desired position (target position) is compared with the actual position (from the encoder) and if the difference between these two values exceeds a specified limit a stall condition is detected. to initiate automatic stall detection the host must specify the number of encoder counts per output motor step. this is accomplished using the command set_step_ratio. the following equation shows how this value should be set for various values of encoder count resolution and output step resolution: ratio = (n counts /n pulses )*256. where: ratio is the ratio value specified to the set_step_ratio command n counts is the number of encoder counts per motor rotation. n pulses is the number of output step pulses per motor rotation for example if a step motor with a 64 ustep per full step pulse and directionping amplifier (12,800 total pulses per motor rotation) is used with an encoder which has 4,000 counts per motor rotation, the ratio specified in the set_step_ratio command would be (4,000/12,800)*256, or 80. although the mc1451a-e supports stall detection with encoders that have a different number of counts then pulses, the ratio provided with the set_step_ratio command must be an exact integer. for example in the above example an encoder with 4,000 counts per rotation which gives a ratio value of 80 is acceptable however an encoder with 4,096 which gives a ratio value of 81.92 is not acceptable. position error the difference between the desired position, also called the target position, and the actual encoder position is known as the position error, or the actual position error. the position error is continuously maintained by the chipset and can be read by the host at any time. to read the position error the command get_actl_pos_err is used. to perform the stall detection function the position error is continuously compared with the maximum allowed position error, which is set using the command set_pos_err. to read this value back the command get_pos_err is used. the units of the maximum position error is encoder counts. if the maximum position error value is exceeded (stall is detected), then the axis is said to be in a "motion error" condition. when this occurs the motion error bit in the axis status word is set, and further pulse generation may be halted, depending on the state of the automatic motor shutdown mode (see set_auto_stop_on and set_auto_stop_off host command descriptions). if the automatic motor stop mode is not set than only the motion error status bit is set. recovering from a motion error to recover from a motion error which results in the pulse output being halted, the following sequence should be performed: 1) determine cause of motion error and correct problem (this may require human intervention). 2) synchronize the profile generator's target position with the actual axis location by executing a synch_prfl command, and then an update command 3) turn pulse generator back on using mtr_on command. after the above sequence the axis will be at rest, and the position error between the target position and the actual encoder position will be set to zero.
31 resetting the position error is useful not only for motion error recovery but also when the coordinate system is changed. several commands reset the position error to zero. these commands are set_actl_pos, which sets the actual as well as the target position to a particular value, zero_pos, which sets the actual and target position to zero, and synch_prfl, which sets the actual position equal to the target position. the zero_pos and synch_prfl commands will not take affect until an update command is given.
32 command summary command mnemonic code (hex) available on axes acted on # data words /direction double buffered description axis control set_1 01 all axes set by cmd. 1/read no set current axis # to 1 set_2 02 all axes set by cmd. 1/read no set current axis # to 2 set_3 03 all axes set by cmd. 1/read no set current axis # to 3 set_4 04 all axes set by cmd. 1/read no set current axis # to 4 set_i 08 all axes interrupting axis 1/read no set current axis # to the interrupting axis profile generation set_prfl_s_crv 0b all axes current axis 0 no set profile mode to s-curve set_prfl_trap 09 all axes current axis 0 no set profile mode to trapezoidal point to point set_prfl_vel 0a all axes current axis 0 no set profile mode to velocity-contouring set_prfl_gear 0c all axes current axis 0 no set profile mode to electronic gear set_pos 10 all axes current axis 2/write yes set command position set_vel 11 all axes current axis 2/write yes set command velocity set_acc 12 all axes current axis 2/write yes set command acceleration set_max_acc 15 all axes current axis 1/write yes set max acceleration (s-curve profile only) set_jerk 13 all axes current axis 2/write yes set command jerk set_ratio 14 all axes current axis 2/write yes set command electronic gear ratio set_start_vel 6a all axes current axis 2/write no set starting velocity stop 46 all axes current axis 0 yes abruptly stop current axis motion smooth_stop 4e all axes current axis 0 yes smoothly stop current axis motion synch_prfl 47 all axes current axis 0 yes set actual pos. equal to target pos. (-e only) get_pos 4a all axes current axis 2/read - get command position get_vel 4b all axes current axis 2/read - get command velocity get_acc 4c all axes current axis 2/read - get command acceleration get_max_acc 4f all axes current axis 1/read - get max. acceleration (s-curve profile only) get_jerk 58 all axes current axis 2/read - get command jerk get_ratio 59 all axes current axis 2/read - get command electronic gear rate get_start_vel 6b all axes current axis 2/read - get starting velocity get_trgt_pos 1d all axes current axis 2/read - get current target position get_trgt_vel 1e all axes current axis 2/read - get current target velocity parameter update set_time_brk 17 all axes current axis 0 no set breakpoint mode to time set_pos_brk 18 all axes current axis 0 no set breakpoint mode to pos. target position set_neg_brk 19 all axes current axis 0 no set breakpoint mode to neg. target position set_actl_pos_brk 1b all axes current axis 0 no set breakpoint mode to pos. actual position set_actl_neg_brk 1c all axes current axis 0 no set breakpoint mode to neg. actual position set_mtn_cmplt_brk 35 all axes current axis 0 no set breakpoint mode to motion complete set_ext_brk 5e all axes current axis 0 no set breakpoint mode to external set_brk_off 6d all axes current axis 0 no set breakpoint mode off set_brk_pnt 16 all axes current axis 2/write no set breakpoint comparison value update 1a all axes current axis 0 - immediate parameter update multi_update 5b all axes set by mask 1/write no multiple axis immediate parameter update set_auto_update_on 5c all axes current axis 0 no set automatic profile update on set_auto_update_off 5d all axes current axis 0 no set automatic profile update off get_brk_pnt 57 all axes current axis 2/read - get breakpoint comparison value
33 command mnemonic code (hex) available on axes acted on # data words /direction double buffered description interrupt processing set_intrpt_mask 2f all axes current axis 1/write no set interrupt mask get_intrpt 30 all axes interrupting axis 1/read - get status of interrupting axis rst_intrpt 32 all axes interrupting axis 1/write no reset interrupting events get_intrpt_mask 56 all axes current axis 1/read - get interrupt mask status/mode clr_status 33 all axes current axis 0 no reset status of current axis rst_status 34 all axes current axis 1/write no reset events for current axis get_status 31 all axes current axis 1/read - get axis status word get_mode 48 all axes current axis 1/read - get axis mode word pulse generation set_output_stndrd 3c all axes current axis 0 no set pulse generation mode to standard set_output_high 3b all axes current axis 0 no set pulse generation mode to high speed mtr_on 43 all axes current axis 0 no enable pulse generator output mtr_off 42 all axes current axis 0 no disable pulse generator output encoder (-e version chipsets only) get_actl_pos 37 all axes current axis 2/read - get current actual axis location set_step_ratio 68 all axes current axis 1/write no set number of encoder counts per step get_step_ratio 6f all axes current axis 1/read - get number of encoder counts per step set_auto_stop_on 45 all axes current axis 0 no set auto stop on motion error mode on set_auto_stop_off 44 all axes current axis 0 no set auto stop on motion error mode off set_pos_err 29 all axes current axis 1/write no set maximum position error limit get_pos_err 55 all axes current axis 1/read - get maximum position error limit get_actl_pos_err 60 all axes current axis 1/read - get actual position error miscellaneous set_actl_pos 4d all axes current axis 2/write no set axis position set_lmt_sense 66 all axes global 1/write no set limit switch bit sense get_lmt_swtch 67 all axes global 1/read - get state of limit switches lmts_on 70 all axes global 0 no set limit switch sensing on lmts_off 71 all axes global 0 no set limit switch sensing off get_home 05 all axes global 1/read - get state of home switches reset 39 all axes global 0 no reset chipset get_vrsn 6c all axes global 1/read - get chipset software version information get_time 3e all axes global 2/read - get current chip set time (# cycles)
34 command reference each command consists of a single byte, with a command code value as described in the "encoding" description for each command. data is transmitted to/from the chip set in 16-bit words. all data is encoded "high to low" i.e. each 16-bit word is encoded high byte first, low byte second, and two word data values are encoded high word first, low word second. signed data is represented in two?s complement format. in the case of 32-bit quantities, the entire 32-bit number is two's complemented. for example to transmit the decimal number 1,234,567, which has a hexadecimal representation of 12d687, the high word is sent first (12 hex) and then the low word is sent (d687 hex). negative numbers are treated in the same way. for example to transmit the decimal number -746,455 , which has a hexadecimal value of fff49c29, then the high word is transmitted first (fff4 hex.) followed by the low word (9c29 hex.). some chipset quantities such as position are provided with ?unity scaling?, meaning that the value provided is used by the chipset without internal scaling. other chipset quantities are scaled by various constants to allow a more useful operating range. the non-unity scaling constants that are used by the chipset are either 1/2 16 or 1/2 32 . if 1/2 16 scaling is used then the chipset expects a number which has been scaled by a factor of 65,536 from the ?user? units. for example to specify a velocity (set_vel command) of 2.75 steps/cycle time, 2.75 is multiplied by 65,536 and the result is sent to the chipset as a 32 bit integer (180,224 dec. or 2c000 hex.). 1/2 16 scaling is used with 16 bit as well as 32 bit quantities. the size of the data word does not affect how the scaling is performed. if 1/2 32 scaling is indicated the chipset expects a number which has been scaled by a factor of 4,294,967,296. for example to specify a jerk value (set_jerk command) of .0075 steps/cycle time 3 , .0075 is multiplied by 4,294,967,296 and the result is sent to the chipset as a 32 bit integer (32,212,256 dec. or 1eb8520 hex). all transmissions to/from the chip set are checksummed. the checksum is a 16-bit quantity that can be read at the end of each command transmission. the checksum value consists of the 16-bit sum of all 16-bit transmissions to or from the chip set, including the command byte which occupies the low byte of the first 16-bit transmission word. for example if a set_vel command (which takes two 16-bit words of data) was sent with a data value of fedcba98 (hex), the checksum would be: 0011 (code for set_vel command) + fedc (high data word) + ba98 (low data word) ---------- 1b985 check sum = b985 (keep bottom 16 bits only) the following hex code commands are reserved for future use, or are currently used during manufacturing/test. they return a valid checksum, although they should not be used during normal chipset operations. the hex command codes are: 49, 4e the following hex code commands are illegal, and will return a checksum of 0. they should not be used during normal chipset operations. the hex command codes are: 00, 03, 04, 22, 80 through ff unless otherwise noted, all numerical values presented in this command summary are in decimal. axis control set_1 set current axis to #1 data/direction: 1/read encoding: 01 (hex) axis acted on: set by command available on: all axes double buffered: no set_1 changes the current axis number to 1. all commands that operate on the current axis will be affected by this command. the status of axis #1 is returned. see get_status command for the status word format. set_2 set current axis to #2 data/direction: 1/read encoding: 02 (hex) axis acted on: set by command available on: all axes double buffered: no set_2 changes the current axis number to 2. all commands that operate on the current axis will be affected by this command. the status of the axis #2 is returned. see get_status command for the status word format. set_3 set current axis to #3 data/direction: 1/read encoding: 03 (hex) axis acted on: set by command available on: all axes double buffered: no set_3 changes the current axis number to 3. all commands that operate on the current axis will be affected by this command. the status of the axis #3 is returned. see get_status command for the status word format.
35 set_4 set current axis to #4 data/direction: 1/read encoding: 04 (hex) axis acted on: set by command available on: all axes double buffered: no set_4 changes the current axis number to 4. all commands that operate on the current axis will be affected by this command. the status of the axis #4 is returned. see get_status command for the status word format. set_i set current axis to interrupting axis data/direction: 1/read encoding: 08 (hex) axis acted on: interrupting axis available on: all axes double buffered: no set_i changes the current axis number to the interrupting axis, which is the axis that has caused the host interrupt to become active. all commands that operate on the current axis will be affected by this command. the status of the interrupting axis is returned. see get_status command for the status word format. profile generation set_prfl_s_crv set profile mode to s-curve point to point data/direction: none encoding: 0b (hex) axis acted on: current axis available on: all axes double buffered: no set_prfl_s_crv sets the trajectory profile mode to s-curve point to point. in this mode, the host specifies the destination position (set_pos cmd), the maximum velocity (set_vel cmd) the maximum acceleration (set_max_acc cmd), and the jerk (set_jerk cmd). once in this mode, the trajectory profile generator will drive the axis to the destination position at the specified jerk while not exceeding the maximum velocity and max. acceleration. the axis will stay in this profile mode until another profile mode is explicitly set. while in this profile mode, no parameters should be changed while the axis is in motion. before setting the current profile mode to s-curve point to point, the axis should be completely at rest. set_prfl_trap set profile mode to trapezoidal point to point data/direction: none encoding: 09 (hex) axis acted on: current axis available on: all axes double buffered: no set_prfl_trap sets the trajectory profile mode to trapezoidal point to point. in this mode, the host specifies the destination position (set_pos cmd), the maximum velocity (set_vel cmd), the starting velocity (set_start_vel cmd), and the acceleration (set_acc cmd). once in this mode, the trajectory profile generator will drive the axis to the destination position at the specified acceleration while not exceeding the maximum velocity. position and velocity may be changed on the fly when in this profile mode; acceleration and starting velocity may not. the axis will stay in this profile mode until another profile mode is explicitly set. before setting the current profile mode to trapezoidal point to point, the axis should be completely at rest. while in this mode, the acceleration should not be changed until the axis has come to a stop. set_prfl_vel set profile mode to velocity contouring. data/direction: none encoding: 0a (hex) axis acted on: current axis available on: all axes double buffered: no set_prfl_vel sets the trajectory profile mode to velocity contouring. in this mode the host specifies the command acceleration (set_acc cmd), the starting velocity (set_start_vel cmd), and the maximum velocity (set_vel cmd). once in this mode, the trajectory profile generator will drive the axis at the specified acceleration while not exceeding the maximum velocity. the acceleration and the maximum velocity may be changed on the fly. the starting velocity may not. the axis will stay in this profile mode until another profile mode is explicitly set. there are no limitations on changing the profile mode to velocity contouring while the axis is in motion. there are no host-specified limits on the position in this mode. it is the responsibility of the host to specify profile parameters that maintain the axis within safe position limits. set_prfl_gear set profile mode to electronic gear data/direction: none encoding: 0c (hex) axis acted on: current axis available on: all axes double buffered: no set_prfl_gear, sets the trajectory profile mode to electronic gear. in this mode the host specifies the gear ratio (set_ratio cmd). once
36 in this mode the trajectory profile generator will drive the current axis to the position specified by the encoder factored by the specified gear ratio. the gear ratio may be changed on the fly. the axis will stay in this profile mode until another profile mode is explicitly set. there are no host-specified limits to axis motion in this mode. it is the responsibility of the host to specify a gear ratio that maintains the axis within safe motion limits. this command is available on the mc1451a-e, MC1251A-e, and mc1151a-e parts only. set_pos set command position data/direction 2/write encoding: 10 (hex) axis acted on: current axis available on: all axes double buffered: yes set_pos sets the final position used during the s-curve and trapezoidal trajectory profile generator modes. the position is specified as a signed 32-bit number with units of steps. the range is -1,073,741,824 to 1,073,741,823. the loaded position is not utilized until a parameter update occurs. set_vel set command velocity data/direction: 2/write encoding: 11 (hex) axis acted on: current axis available on: all axes double buffered: yes set_vel sets the maximum velocity magnitude used during the s- curve, trapezoidal, and velocity contouring profile modes. the velocity is specified as an unsigned 32-bit number with units of steps/cycle. the data word scaling is 1/2 16 . the range is 0 to +1,073,741,823. the loaded velocity is not utilized until a parameter update occurs. set_acc set command acceleration data/direction: 2/write encoding: 12 (hex) axis acted on: current axis available on: all axes double buffered: yes set_acc sets the command acceleration. when in trapezoidal point- to-point mode, the acceleration is specified as an unsigned 32-bit number with units of steps/cycle 2 , represented using 1/2 16 scaling. the range is 0 to +1,073,741,823. when in the velocity contouring mode, the acceleration is specified as a signed 32-bit number with units of steps/cycle 2 , represented in 1/2 16 format.the range is -1,073,741,824 to +1,073,741,823. the loaded acceleration is not utilized until a parameter update occurs. this command is used when the profile mode is set to trapezoidal point-to-point or velocity contouring. set_max_acc set maximum acceleration data/direction: 1/write encoding: 15 (hex) axis acted on: current axis available on: all axes double buffered: yes set_max_acc sets the maximum acceleration. the acceleration is specified as an unsigned 16-bit number with units of steps/cycle 2 represented using 1/2 16 scaling. the range is 0 to +1,073,741,823. the loaded max. acceleration is not utilized until a parameter update occurs. this command is used when the profile mode is set to s-curve point to point. set_jerk set command jerk data written: 2 words data read: none encoding: 13 (hex) axis acted on: current axis available on: all axes double buffered: yes set_jerk sets the command jerk used during the s-curve profile generation mode. the jerk is specified as an unsigned 32-bit number with units of steps/cycle 3 . the scaling is 1/2 32 . the range is 0 to 2,147,483,647. the loaded jerk is not utilized until a parameter update occurs. set_ratio set command gear ratio data/direction: 2/write encoding: 14 (hex) axis acted on: current axis available on: all axes double buffered: yes set_ratio sets the electronic gear ratio used by the trajectory profile generator. it is used when the profile mode is set to electronic gear. the gear ratio is specified as a signed 32-bit number with 1/2 16 scaling. the range is -1,073,741,824 to +1,073,741,823. the specified ratio value is defined as the number of steps per encoder count with a positive number indicating motion in the same direction. for example a value of +8000 hex (1/2) will result in 1 step in the positive direction for each two encoder counts in the positive direction, and a value of -fffe0000 hex (-2) will result in 2 steps in the negative direction for each encoder count in the positive direction. the loaded ratio is not utilized until a parameter update occurs.
37 this command is available on the mc1451a-e, MC1251A-e, and mc1151a-e parts only. set_start_vel set starting velocity data/direction: 2/write encoding: 6a (hex) axis acted on: current axis available on: all axes double buffered: no set_start_vel sets the minimum allowed velocity. this command is used during the trapezoidal and velocity contouring profile modes, and is useful in conjunction with systems that may be induced to oscillate if operated at too low a speed. the starting velocity is specified as an unsigned 32-bit number with units of steps/cycle. the data word scaling is 1/2 16. the range is 0 to +1,073,741,823. the starting velocity must always be smaller than the maximum velocity set using the set_vel command. this command is not used with the s-curve and electronic gear profile modes. the starting velocity parameter is not double buffered. it takes affect immediately, not after an update command. stop abruptly stop current axis motion data/direction: none encoding: 46 (hex) axis acted on: current axis available on: all axes double buffered: yes stop, also known as clr_prfl in earlier chipset versions, stops the current axis by setting the target velocity to zero. this function will not be performed until a parameter update occurs. after the update occurs the axis trajectory generator will stop and the motion complete bit will be set. this command is useful for stopping the axis abruptly. smooth_stop smoothly stop current axis motion data/direction: none encoding: 4e (hex) axis acted on: current axis available on: all axes double buffered: yes smooth_stop stops the current axis by setting the desired velocity to zero, resulting in a controlled deceleration of the axis eventually to a velocity of 0. the deceleration profile will mirror the acceleration profile for the current profile mode. for example if the smooth_stop command is given during an s-curve profile the deceleration profile may have up to three phases, depending on the # of phases during the acceleration profile, and if the smooth_stop command is given during a trapezoidal profile or a velocity mode profile the deceleration will be linear, with a value equal to the acceleration parameter. this command does not function when the profile mode is set to electronic gear. synch_prfl set target position equal to the actual position data/direction: none encoding: 47 (hex) axis acted on: current axis available on: all axes double buffered: yes synch_prfl sets the trajectory profile generator target position (in steps) equal to the actual axis position (in encoder counts), clearing the following error. this command is available for all profile types. this function will not be performed until a parameter update occurs. the synch_prfl command does not set the target velocity to zero. if it is desired that the axis not move after a synch_prfl command then a stop command, in addition to the synch_prfl command should be used. this command is available on the mc1451a-e, MC1251A-e, and mc1151a-e parts only. get_pos get command position data/direction: 2/read encoding: 4a (hex) axis acted on: current axis available on: all axes double buffered: - get_pos returns the destination position set using the set_pos command. it returns the double-buffered value (set directly by the host), which may or may not correspond to the active value, depending on whether the profile parameters have been updated. the returned position is a signed 32-bit number with units of steps. get_vel get command velocity data/direction: 2/read encoding: 4b (hex) axis acted on: current axis available on: all axes double buffered: - get_vel returns the maximum velocity set using the set_vel command. it returns the double-buffered value (set directly by the host), which may or may not correspond to the active value, depending on whether the profile parameters have been updated. the returned
38 velocity is an unsigned 32-bit number in 1/2 16 format with units of steps/cycle. get_acc get command acceleration data/direction: 2/read encoding: 4c (hex) axis acted on: current axis available on: all axes double buffered: - get_acc returns the acceleration value set using the set_acc command. it returns the double-buffered value (set directly by the host), which may or may not correspond to the active value, depending on whether the profile parameters have been updated. the returned position is either an unsigned 32-bit number in 1/2 16 format with units of steps/cycle 2 , or a signed 32 bit number in 1/2 16 format with units of steps/cycle 2 . this command is used when the profile mode is set to trapezoidal point-to-point or velocity contouring. get_max_acc get maximum acceleration data/direction: 1/read encoding: 4f (hex) axis acted on: current axis available on: all axes double buffered: - get_max_acc returns the max. acceleration value set using the set_max_acc command. it returns the double-buffered value (set directly by the host), which may or may not correspond to the active value, depending on whether the profile parameters have been updated. the returned acceleration is an unsigned 16-bit number in 1/2 16 format with units of steps/cycle 2 . this command is used when the profile mode is set to s-curve point to point. get_jerk get command jerk data/direction: 2/read encoding: 58 (hex) axis acted on: current axis available on: all axes double buffered: - get_jerk returns the jerk value set using the set_jerk command. it returns the double-buffered value (set directly by the host), which may or may not correspond to the active value, depending on whether the profile parameters have been updated. the returned jerk is an unsigned 32-bit number with 1/2 32 scaling with units of steps/cycle 3 . get_ratio get command gear ratio data/direction: 2/read encoding: 59 (hex) axis acted on: current axis available on: all axes double buffered: - get_ratio returns the gear ratio set using the set_ratio command. it returns the double-buffered value (set directly by the host), which may or may not correspond to the active value, depending on whether the profile parameters have been updated. the returned ratio is a signed 32-bit number in 1/2 16 format. this command is available on the mc1451a-e, MC1251A-e, and mc1151a-e parts only. get_start_vel get starting velocity data/direction: 2/read encoding: 6b (hex) axis acted on: current axis available on: all axes double buffered: - get_start_vel returns the starting velocity set using the set_start_vel command. the returned starting velocity is an unsigned 32-bit number using 1/2 16 scaling with units of steps/cycle. get_trgt_pos return target position data/direction: 2/read encoding: 1d (hex) axis acted on: current axis available on: all axes double buffered: - get_trgt_pos returns the current desired position value being generated by the trajectory profile generator. this value represents the target position for the axis at the current cycle time, i.e. the position being output by the trajectory profile generator at the time of the command. this command operates for all profile modes. the value returned is a 32-bit signed number with units of steps. the range is - 1,073,741,824 to 1,073,741,823. get_trgt_vel return target velocity data/direction: 2/read encoding: 1e (hex) axis acted on: current axis available on: all axes double buffered: - get_trgt_vel returns the current desired velocity value being generated by the trajectory profile generator. this value represents the target velocity for the axis at the current cycle time, i.e. the velocity being output by the trajectory profile generator at the time of the command. this command operates for all profile modes. the value
39 returned is a 32 bit signed number with units of steps/cycle, represented in 1/2 16 format. the range is -1,073,741,824 to +1,073,741,823. parameter update set_time_brk set break point mode to time based data/direction: none encoding: 17 (hex) axis acted on: current axis available on: all axes double buffered: no set_time_brk sets the current breakpoint mode to time based. in this mode the value loaded into the breakpoint register (set_brk_pnt cmd) will represent the number of cycles since chip set power on. after the set_time_brk command is executed, at each loop the break point value will be compared against the current chip set time. if the values are equal all double-buffered parameters will be loaded in to the active registers. see get_time cmd for information on the chip set time. after this breakpoint condition has been satisfied, the breakpoint mode is reset i.e. no additional breakpoints will occur until a new breakpoint condition is set. set_pos_brk set break point mode to positive target position based data/direction: none encoding: 18 (hex) axis acted on: current axis available on: all axes double buffered: no set_pos_brk sets the current breakpoint mode to positive target position based. in this mode the value loaded into the breakpoint register (set_brk_pnt cmd) will represent the axis position in steps. after the set_pos_brk command is executed, at each cycle the break point value will be compared against the current axis target position. if the target position has a value equal to or greater than the breakpoint register then all double-buffered parameters will be loaded in to the active registers. after this breakpoint condition has been satisfied, the breakpoint mode is reset i.e. no additional breakpoints will occur until a new breakpoint condition is set. set_neg_brk set break point mode to negative target position based data/direction: none encoding: 19 (hex) axis acted on: current axis available on: all axes double buffered: no set_neg_brk sets the current breakpoint mode to negative target position based. in this mode the value loaded into the breakpoint register (set_brk_pnt cmd) will represent the axis position in steps after the set_neg_brk command is executed, at each cycle the break point value will be compared against the current axis target position. if the target position has a value equal to or less than the breakpoint register then all double-buffered parameters will be loaded into the active registers. after this breakpoint condition has been satisfied, the breakpoint mode is reset i.e. no additional breakpoints will occur until a new breakpoint condition is set. set_actl_pos_brk set break point mode to positive actual position based data/direction: none encoding: 1b (hex) axis acted on: current axis available on: all axes double buffered: no set_actl_pos_brk sets the current breakpoint mode to positive actual position based. in this mode the value loaded into the breakpoint register (set_brk_pnt cmd) will represent the axis position in steps. after the set_actl_pos_brk command is executed, at each cycle the break point value will be compared against the current axis actual position. if the actual position has a value equal to or greater than the breakpoint register then all double-buffered parameters will be loaded in to the active registers. after this breakpoint condition has been satisfied, the breakpoint mode is reset i.e. no additional breakpoints will occur until a new breakpoint condition is set.. this command is available on the mc1451a-e, MC1251A-e, and mc1151a-e parts only. set_actl_neg_brk set break point mode to negative actual position based data/direction: none encoding: 1c (hex) axis acted on: current axis available on: all axes double buffered: no set_actl_neg_brk sets the current breakpoint mode to negative actual position based. in this mode the value loaded into the breakpoint register (set_brk_pnt cmd) will represent the axis position in steps after the set_actl_neg_brk command is executed, at each cycle the break point value will be compared against the current axis actual position. if the actual position has a value equal to or less than the breakpoint register then all double-buffered parameters will be loaded into the active registers. after this breakpoint condition has been satisfied, the breakpoint mode is reset i.e. no additional breakpoints will occur until a new breakpoint condition is set. this command is available on the mc1451a-e, MC1251A-e, and mc1151a-e parts only.
40 set_mtn_cmplt_brk set break point mode to motion complete data/direction: none encoding: 35 (hex) axis acted on: current axis available on: all axes double buffered: no set_mtn_cmplt_brk sets the current breakpoint mode to motion complete. in this mode the breakpoint condition is satisfied when the motion complete bit in the axis status word becomes active (axis motion is complete). this breakpoint mode is useful for immediately starting a new profile at the end of the current profile. once the motion complete bit becomes active all double-buffered parameters will be loaded in to the active registers. after this breakpoint condition has been satisfied, the breakpoint mode is reset i.e. no additional breakpoints will occur until a new breakpoint condition is set. no 32-bit compare value is required to be loaded when using this breakpoint mode. it is the responsibility of the host to ensure that the motion complete bit is not set when this breakpoint is initiated. set_ext_brk set break point mode to external data/direction: none encoding: 5e (hex) axis acted on: current axis available on: all axes double buffered: no set_ext_brk sets the current breakpoint mode to external. in this mode the breakpoint condition is satisfied when the home signal for the current axis becomes active (goes low). this breakpoint mode is useful for executing a profile change based on some external signal condition. once the home signal becomes active all double-buffered parameters will be loaded in to the active registers. after this breakpoint condition has been satisfied, the breakpoint mode is reset i.e. no additional breakpoints will occur until a new breakpoint condition is set. no 32-bit compare value is required to be loaded when using this breakpoint mode. set_brk_off set break point mode off data/direction: none encoding: 6d (hex) axis acted on: current axis available on: all axes double buffered: no set_brk_off sets the breakpoint mode to "off". any breakpoint mode that has been set previously (set_time_brk, set_pos_brk, set_neg_brk, set_actl_pos_brk or set_actl_neg_brk) and is still active (the breakpoint condition has not occurred), is disabled with this command. after this command has been executed no additional breakpoints will occur until a new breakpoint condition is set. set_brk_pnt set break point comparison value data/direction: 2/write encoding: 16 (hex) axis acted on: current axis available on: all axes double buffered: no set_brk_pnt sets the breakpoint comparison value. its contents are interpreted based on the type of breakpoint set; time based (set_time_brk cmd) or position based (set_pos_brk cmd, set_neg_brk cmd, set_pos_actl_brk cmd, and set_neg_actl_brk cmd). when set to time-based the loaded value is compared with the current chip set time at each cycle, and the value loaded is a 32-bit number with units of cycles. when set to position- based the loaded value is compared with the current axis target or actual position at each cycle, and the value loaded is a 32-bit number with units of steps. update immediately update parameters data/direction: none encoding: 1a (hex) axis acted on: current axis available on: all axes double buffered: no update immediately updates all double buffered parameters. multi_update immediately update parameters for multiple axis data/direction: 1/write encoding: 5b (hex) axis acted on: set by data word available on: all axes double buffered: no multi_update immediately updates the double-buffered parameters for 1 or more axis simultaneously. for each updated axis, the axis behaves as if a separate update command had been given for each axis. the associated data word contains a "positive-sense" bit mask for each axis. a one (1) in the axis bit position indicates the axis will be updated. a zero (0) indicates it will not. the following table shows this bit encoding: bit # axis # updated 01 12 23 34 4-15 unused, must be set to 0
41 set_auto_update_on set automatic profile update on data/direction: none encoding: 5c (hex) axis acted on: current available on: all axes double buffered: no set_auto_update_on sets the automatic profile update mechanism on. after this command is sent, a satisfied breakpoint condition will result in all of the double-buffered parameters automatically being transferred to the active registers. once set to this mode, the axis will stay in this mode until explicitly commanded out using the set_auto_update_off command. set_auto_update_off set automatic profile update off data/direction: none encoding: 5d (hex) axis acted on: current available on: all axes double buffered: no set_auto_update_off sets the automatic profile update mechanism off. after this command is sent, a satisfied breakpoint condition will not result in the double-buffered parameters automatically being transferred to the active registers. once set to this mode, the axis will stay in this mode until explicitly commanded out using the set_auto_update_on command. when in this mode, the only way that profile parameters can be updated is through the update or the multi_update commands. get_brk_pnt get break point comparison value data/direction: 2/read encoding: 57 (hex) axis acted on: current axis available on: all axes double buffered: no get_brk_pnt returns the breakpoint comparison value set using the set_brk_pnt command. the returned value is a 32-bit number with units of either cycles or steps (depending on the current breakpoint mode). interrupt processing set_intrpt_mask set host interrupt mask data/direction: 1/write encoding: 2f (hex) axis acted on: current axis available on: all axes double buffered: no set_intrpt_mask sets the interrupt mask so that interrupt events can be individually masked off. when a non-masked interrupt occurs in any axis, the interrupt signal to the host is activated (hostintrpt pin on i/o chip). the host can choose to ignore or respond to the interrupt. once an interrupt has been generated, no new interrupts will be generated until a rst_intrpt command is given, after which the interrupt signal to the host will be cleared, and a new interrupt (on any axis) can be generated. the associated data word is encoded as a field of bits, with each bit representing a possible interrupting condition. a 1 value in the mask bit will cause the corresponding event to generate an interrupt, while a 0 will stop the corresponding event from interrupting the host. the bit encoding is as follows: bit # event 0 motion complete 1 position wrap-around 2 update breakpoint reached 3 position capture received 4 motion error 5 positive limit switch 6 negative limit switch 7 command error 8-15 not used, must be set to 0 get_intrpt return status of the interrupting axis data/direction: 1/read encoding: 30 (hex) axis acted on: interrupting axis available on: all axes double buffered: - get_intrpt returns the status of the axis that generated a host interrupt. the current axis number will not be changed after executing this command. see get_status for a definition of the returned status word. if this command is executed when no interrupt condition is present, the status of the current axis will be returned. if this command is executed when no interrupt condition is present, the command will return the status of the current axis (same as get_status command).
42 rst_intrpt reset interrupting condition events data/direction: 1/write encoding: 32 (hex) axis acted on: interrupting axis available on: all axes double buffered: no rst_intrpt resets (clears) the interrupt condition bits for the axis that caused a host interrupt by masking the interrupting axis status word with the specified data word. in addition, the host interrupt signal (hostintrpt pin on i/o chip) is de-activated.the data word is encoded as a field of bits, with each bit representing a possible interrupting condition. for each status word event bit a 1 value in the specified word will cause the status bit to remain unchanged, while a 0 will reset the corresponding event. the bit encoding is as follows: bit # event 0 motion complete 1 position wrap-around 2 breakpoint reached 3 position capture received 4 motion error 5 positive limit switch 6 negative limit switch 7 command error 8-15 not used, may be set to 0 or 1 if this command is executed when no interrupt condition is present, the command will have no effect. get_intrpt_mask get host interrupt mask data/direction: 1/read encoding: 56 (hex) axis acted on: current axis available on: all axes double buffered: no get_intrpt_mask returns the interrupt mask set by the set_intrpt_mask command. the returned value is a bit-encoded mask, described in the set_intrpt_mask command. status/mode clr_status clear all event bit conditions data/direction: none encoding: 33 (hex) axis acted on: current axis available on: all axes double buffered: no clr_status resets (clears) all of the event bit conditions for the axis (bits 0-7 of the status word). the host interrupt line is not affected by this command. this command is useful for clearing all event bits during initialization, or during on-line usage if the interrupt line and associated commands are not being used. for a detailed description of the status word event bits, see the get_status command. this command does not affect the status of the host interrupt line, only the status event-bits themselves. to reset the host interrupt line, a rst_intrpt command must be sent. rst_status reset specific event bit conditions data/direction: 1/write encoding: 34 (hex) axis acted on: current axis available on: all axes double buffered: no rst_status resets (clears) the condition event bits for the current axis, using a data word mask. the data word is encoded as a field of bits, with each bit representing a possible condition event. for each status word event bit a 1 value in the specified data word will cause the status bit to remain unchanged, while a 0 will reset the corresponding event. the bit encoding is as follows: bit # event 0 motion complete 1 position wrap-around 2 breakpoint reached 3 position capture received 4 motion error 5 positive limit switch 6 negative limit switch 7 command error 8-15 not used, may be set to 0 or 1 get_status get axis status word data/direction: 1/read encoding: 31 (hex) axis acted on: current axis available on: all axes double buffered: - get_status returns the status of the current axis.the bit encoding of the returned word is as follows: bit # event 0 motion complete (1 indicates complete) 1 position wrap-around (1 indicates wrap) 2 update breakpoint reached (1 indicates reached) 3 position capture received (1 indicates capture has occurred) 4 motion error (1 indicates motion error) 5 positive limit switch (1 indicates limit switch trip) 6 negative limit switch (1 indicates limit switch trip) 7 command error (1 indicates command error) 8 motor on/off status (1 indicates on) 9 axis on/off status (1 indicates on)
43 10 in-motion bit (1 indicates axis is in motion) 11 reserved (may be 0 or 1) 12,13 current axis # (13 bit = high bit, 12 bit = low bit) 14,15 reserved (may be 0 or 1) bits 0-7 are set by the chipset, and must be reset by the host (using clr_status, rst_status, or rst_intrpt commands). bits 8, 9, 10, 12, and 13 are continuously maintained by the chipset and are not set or reset by the host. get_mode get axis mode word data/direction: 1/read encoding: 48 (hex) axis acted on: current axis available on: all axes double buffered: - get_mode returns the mode word for the axis.the bit encoding of the returned word is as follows: bit # event 0-6 contains no host-useable information. 7 stop on motion error mode flag. 1 indicates auto stop is on. 8 internal use only. contains no host-useable data 9 pulse generator mode. 1 indicates high speed mode, 0 indicates standard mode 10 auto update flag. 1 indicates auto update is disabled. 11,12 trajectory profile mode, encoded as follows: bit 12 bit 11 profile mode 0 0 trapezoidal 0 1 velocity contouring 10s-curve 1 1 electronic gear 13-15 phase # (s-curve profile only). 3-bit word encodes phase #. bit 15 is msb, bit 13 is lsb. pulse generation set_output_stndrd set pulse generator mode to standard data/direction: none encoding: 3c (hex) axis acted on: current available on: all axes double buffered: no set_output_stndrd sets the pulse generator output mode to standard. in this mode the maximum pulse rate output by the chipset is 48.8 kilopulses/sec. this command only affects the current axis. unlike the output mode control commands for pmd's servo chips (set_output_pwm cmd, set_output_dac16 cmd), this command does not act globally, but on the current axis only. this allows different pulse ranges to be executed on different axes. set_output_high set pulse generator mode to high speed data/direction: none encoding: 3b (hex) axis acted on: current available on: all axes double buffered: no set_output_high sets the pulse generator output mode to high speed. in this mode the maximum pulse rate output by the chipset is 1.5625 megapulses/sec. this command only affects the current axis. unlike the output mode control commands for pmd's servo chips (set_output_pwm cmd, set_output_dac16 cmd), this command does not act globally, but on the current axis only. this allows different pulse ranges to be executed on different axes. mtr_on enable pulse generation output data/direction: none encoding: 43 (hex) axis acted on: current axis available on: all axes double buffered: no mtr_on enables pulse generation. when pulse generation is enabled, pulse rate and direction information is generated by the trajectory generator and output on the pulse and direction lines. when it is disabled no pulse generation can occur. after a mtr_on command the pulse generator will be inactive until a trajectory move is made by the host. mtr_off disable pulse generation output data/direction: none encoding: 42 (hex) axis acted on: current axis available on: all axes double buffered: no mtr_off disables pulse generation. when pulse generation is disabled, pulse rate and direction output is immediately terminated. to re-enabled pulse output the mtr_on command should be used.
44 encoder (-e version chipsets only) get_actl_pos return actual axis position data/direction: 2/read encoding: 37 (hex) axis acted on: current axis available on: all axes double buffered: - get_actl_pos returns the current encoder position of the current axis. the value read is up to date to within a cycle time.the value returned is a 32 bit signed number with units of encoder counts. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. set_capt_index set position capture trigger source to the index signal data/direction: none encoding: 64 (hex) axis acted on: current axis available on: all axes double buffered: no set_capt_index sets the high-speed position register trigger source for the current axis to the index signal. when the index is used as the trigger source, it is gated by the a and b quadrature signals (see pin descriptions section of this manual for details). this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. set_capt_home set position capture trigger source to the home signal data/direction: none encoding: 65 (hex) axis acted on: current axis available on: all axes double buffered: no set_capt_home sets the high-speed position register trigger source to the home signal. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. get_capt return high speed capture register data/direction: 2/read encoding: 36 (hex) axis acted on: current axis available on: all axes double buffered: - get_capt returns the current value of the high-speed position capture register, as well as resets the capture hardware so that subsequent positions may be captured. the value returned is a 32 bit signed number with units of encoder counts. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. set_step_ratio set number of encoder counts per step data/direction: none encoding: 68 (hex) axis acted on: current axis available on: all axes double buffered: no set_step_ratio sets the ratio of encoder counts to output steps for the current axis used in conjunction with automatic stall detection. the specified ratio is a 16-bit unsigned number with a range of 0 to 32,767. the formula that should be used to set this value is: ratio = (n counts /n steps )*256. where n counts is the number of encoder counts per motor rotation, and n steps is the number of output steps per motor rotation (12,800 for a 1.8 degree stepper, 3,200 for a 7.2 degree stepper). using this equation the resultant ratio must be an exact integer. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. get_step_ratio get number of encoder counts per step data/direction: none encoding: 6f (hex) axis acted on: current axis available on: all axes double buffered: - get_step_ratio returns the ratio of encoder counts to output steps set using the set_step_ratio command. the returned value is a 16-bit unsigned number. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only.
45 set_auto_stop_on enable automatic motor shutdown data/direction: none encoding: 45 (hex) axis acted on: current axis available on: all axes double buffered: no set_auto_stop_on enables automatic profile generation shutdown upon motion error. in this mode profile generation will be disabled (equivalent to mtr_off cmd) when a motion error occurs (see set_pos_err cmd for more info.). the profile generator can be re- enabled using the mtr_on cmd. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. set_auto_stop_off disables automatic motor shutdown data/direction: none encoding: 44 (hex) axis acted on: current axis available on: all axes double buffered: no set_auto_stop_off disables automatic profile generator shutdown upon motion error. in this mode the profile generator will not be disabled when a motion error occurs. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. set_pos_err set position error limit data/direction: 1/write encoding: 29 (hex) axis acted on: current axis available on: all axes double buffered: no set_pos_err sets the position error limit for the automatic stall detection facility. the error is specified as an unsigned 16-bit number with units of encoder counts the range is 0 to 32,767. at each chipset cycle the magnitude of the position error calculated by the stall detector is compared with the specified position error limit. if the actual position error exceeds the specified value, the motion error status bit is set. in addition, if the axis has been set for automatic motor stop upon motion error, the axis profile generation will be disabled. the loaded maximum position error is utilized immediately. no update is required for this command to take effect. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. get_pos_err get maximum position error data/direction: 1/read encoding: 55 (hex) axis acted on: current axis available on: all axes double buffered: - get_pos_err returns the maximum position error value set using the set_pos_err command. the returned maximum position error value is an un signed 16-bit number with units of encoder counts. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. get_actl_pos_err return current position error data/direction: 1/read encoding: 60 (hex) axis acted on: current axis available on: all axes double buffered: - get_actl_pos_err returns the current instantaneous position error of the axis. the returned value represents the difference between the actual position and the target position after the target motion, which has units of steps has been converted into encoder counts using the step ratio parameters (set using set_step_ratio command). the returned value is a signed 16-bit number with units of encoder counts. the range is -32,768 to +32,767. this command is available for the mc1451a-e, MC1251A-e, and mc1151a-e parts only. miscellaneous set_actl_pos set actual axis position data/direction: 2/write encoding: 4d (hex) axis acted on: current axis available on: all axes double buffered: no set_actl_pos sets the current actual position (in encoder counts) as well as the current target position (in steps) to the specified value. the desired position is specified as a signed 32 bit number with an allowed range of -1,073,741,824 to 1,073,741,823. if the -e chipset is used this command causes the actual position error to be set to 0. this command causes the actual position error to be set to 0. the loaded position is utilized immediately. no update is required for the command to take effect.
46 set_lmt_sense set limit switch bit sense data/direction: 1/write encoding: 66 (hex) axis acted on: global (all axes) available on: all axes double buffered: - set_lmt_sense sets the interpretation of the limit switch input bits. this command provides added flexibility in interfacing to various switch/sensor components. the signal level interpretation for the positive and negative switch inputs are bit-programmable. a 0 in the corresponding bit of the sense word indicates that the input will be active high. a 1 in the sense word indicates that the input will be active low. the sense word is encoded as follows: bit # description 0 axis 1 positive limit switch (0 = active high) 1 axis 1 negative limit switch (0 = active high) 2 axis 2 positive limit switch (0 = active high) 3 axis 2 negative limit switch (0 = active high) 4 axis 3 positive limit switch (0 = active high) 5 axis 3 negative limit switch (0 = active high) 6 axis 4 positive limit switch (0 = active high) 7 axis 4 negative limit switch (0 = active high) 8-15 not used (must set to 0) the above bits are encoded as shown for the mc1451a. for the mc251a axis 3 and 4 are not used. for the mc1151a axes 2, 3, and 4 are not used. get_lmt_swtch get state of over-travel limit switches data/direction: 1/read encoding: 67 (hex) axis acted on: global (all axes) available on: all axes double buffered: - get_lmt_swtch returns the value of the limit switch input signals for all valid axis. the returned word is encoded as follows: bit # description 0 axis 1 positive limit switch (1 = high) 1 axis 1 negative limit switch (1 = high) 2 axis 2 positive limit switch (1 = high) 3 axis 2 negative limit switch (1 = high) 4 axis 3 positive limit switch (1 = high) 5 axis 3 negative limit switch (1 = high) 6 axis 4 positive limit switch (1 = high) 7 axis 4 negative limit switch (1 = high) 8-15 not used (set to 0) the above bits are encoded as shown for the mc1451a. for the mc251a axis 3 and 4 are not used. for the mc1151a axes 2, 3, and 4 are not used. the values returned by this command are not affected by the set_lmt_sense command. lmts_on set limit switch sensing on data/direction: none encoding: 70 (hex) axis acted on: global (all axes) available on: all axes double buffered: - lmts_on turns the limit switch sensing mechanism on. lmts_on re- enables limit switch sensing whenever it has been disabled using the lmts_off command. lmts_off set limit switch sensing off data/direction: none encoding: 71 (hex) axis acted on: global (all axes) available on: all axes double buffered: - lmts_off turns the limit switch sensing mechanism off. lmts_off is used whenever it is desired that limit switch sensing not be active. this command only disables the automatic setting of the negative and positive limit switch bits in the status word. it does not affect the status of these bits if they have already been set, nor does it affect the get_lmt_swtch command. get_home get state of home signal inputs data/direction: 1/read encoding: 05 (hex) axis acted on: global (all axes) available on: all axes double buffered: - get_home returns the value of the home signal inputs for all valid axes. the returned word is encoded as follows: bit # description 0 axis 1 home signal (1 = high) 1 axis 2 home signal (1 = high) 2 axis 3 home signal (1 = high) 3 axis 4 home signal (1 = high) 4-15 not used (set to 0) the above bits are encoded as shown for the mc1451a. for the mc251a axis 3 and 4 are not used. for the mc1151a axes 2, 3, and 4 are not used.
47 reset reset chip set data/direction: none encoding: 39 (hex) axis acted on: global (all axes) available on: all axes double buffered: no reset resets the entire chip set. this command performs the same sequence as a hardware reset. at the end of this operation the chip set will be in the default or powerup condition, defined as follows: condition initial value all actual axis positions 0 all capture registers 0 all event conditions cleared host interrupt (hostintrpt) signal not active all interrupt masks 0 all profile modes trapezoidal all profile parameter values 0 all brkpnt comparison values 0 auto update enabled (on) capture input mode index limit switch sensing enabled (on) limit switch sense 0 (all active high) all pulse generator modes standard all pulse rates 0 current axis number 1 all current actual positions 0 all step ratios 0 all actual position errors 0 all motor status' on get_vrsn return chipset software information data/direction: 1read encoding: 6c (hex) axis acted on: global (all axes) available on: all axes double buffered: - get_vrsn returns various information on the chipset part number and software version. the encoding is as follows: bit # interpretation 0-2 minor software version 3-4 major software version. major software versions 2 and above indicate 'a' versions parts 5-7 "dash" version # (no dash = 0, -p = 1 8-10 part number code 0 = 00 (mc1400-series), 1 = 01 (mc1401-series), 2 = 31 (mc1231-series) , 3 = 41 (mc1451-series), 4 = 51 (mc1451-series) 11-13 # axes supported (0 = 1) 14-15 generation # (1) for example, the returned version code for the mc1401 (version 1.0 software) is 5908 (hex), the returned version code for the mc1201-p (version 1.0 software) is 4928, and the returned version code for the mc1451a (version 2.1 software) is 5c11. get_time return current chip set time. data/direction: 2/read encoding: 3e (hex) axis acted on: global (all axes) available on: all axes double buffered: - get_time returns the current system time, expressed as the number of cycles since chip set power on.the chip set clock starts at 0 after a power on or reset and will count indefinitely, wrapping from a value of 4,294,967,296 to 0. the returned value is a 32 bit number with units of cycles.
48 application notes interfacing mc1451 to isa bus. a complete, ready-to-use isa (pc/at) bus interface circuit has been provided to illustrate mc1451a host interfacing. the interface between the pmd mc1451a chip set and the isa (pc- at) bus is shown on the following page. comments on schematic this interface uses a 22v10 pal and a 74ls245 to buffer the data lines.this interface assumes a base address is assigned in the address space of a9-a0. 300-400 hex these addresses are generally available for prototyping and other system-specific uses without interfering with system assignments. this interface occupies 16 addresses from xx0 to xxf hex though it does not use all the addresses. two select lines are provided allowing the base address to be set to 340,350,370 and 390 hex for the select lines s1,s0 equal to 0,1,2,and 3 respectively.the address assignments used are as follows, where badr is the base address, 340 hex for example: address use 340h read-write data 342h write command 344h read status (hostrdy) [d7 only] 348h write reset [data= don't care] the base address (badr) is decoded in adrdec. it is nanded with sa2:sa3, badr+0, (b+0) to form -hsel to select the i/o chip. b+0 nanded with ior* forms -hrd, host read, directly. the 22v10 tail-bites the write pulse since the setup time is greater than necessary on the bus some of the bus duration is used to generate data hold time at the i/o chip. -hwr, host write is set the first clock after b+0 and iow* is recognized. the next clock sets tog and clears -hwr. tog remains set holding -hwr clear until iow* is unasserted on the bus indicating the end of the bus cycle. b+4 and ior* out enables hrdy to sd7 so the status of hrdy may be tested. sd7 is used since the sign bit of a byte may be easily tested. the rest of the data bits are left floating and should be ignored. b+8 and iow* generate a reset pulse which will init the interface by clearing the two write registers and outputs a reset pulse, -rs, for the cp chip. the reset instruction is or'd with reset on the bus to initialize the pmd chip set when the pc is reset.
49
50 notes
available configurations: operating modes: position range: velocity range: acceleration range: jerk range: cycle rate: maximum pulse rate: pulse output modes: trajectory profile generator modes: electronic gear ratio range: max. incremental encoder rate: # of limit switches per axis: miscellaneous control signals # of host commands: 4 axes with pulse & direction output (mc1451a) 2 axes with pulse & direction output (MC1251A) 1 axis with pulse & direction output (mc1151a) 4 axes with pulse & direction and encoder input (mc1451a-e) 2 axes with pulse & direction output and encoder input (MC1251A-e) 1 axis with pulse & direction output and encoder input (mc1151a-e) open loop (uses trajectory generator, pulse generator) stall detection (uses trajectory generator, pulse generator and encoder feedback for stall detection) -1,073,741,824 to 1,073,741,823 steps -16,384 to 16,383 steps/ cycle with a resolution of 1/65,536 steps/cycle s-curve profile: -1/2 to 1/2 steps/cycle^2 with a resolution of 1/65, 536 steps/ cycle^2 all other profiles: -16,384 to 16,383 steps/ cycle^2 with a resolution of 1/65, 536 steps/ cycle^2 -1/2 to 1/2 steps/cycle^3, with a resolution of 1/4,294,967,296 steps/ cycle^3 330usec/cycle (rate of profile calculations) 1.5625 mpulses/sec high speed (up to 1.5625 mpulses/sec) standard speed (up to 48.828 kpulses/sec) s-curve (host commands final position, maximum velocity, maximum acceleration, and jerk) trapezoidal (host commands final position, maximum velocity, and acceleration) velocity contouring (host commands maximum velocity, acceleration) electronic gear (encoder position used as position command for stepper axis, -e version chipsets only). 32,768:1 to 1:32,768 (negative and positive direction, -e version chipsets only) 1.25 mcounts/sec (-e version chipsets only) 2 (one for each direction of travel) home signal (one per axis, can be programmed to automatically change profiles on the fly) at rest signal (one per axis) home signal (one per axis) 72 technical specifications ordering information p/n: mc1 51a- 4 - 4 axis 2 - 2 axis custom chipset versions also available. call pmd p/n: dk1451a* *(supports mc1451a, MC1251A, mc1151a, mc1451a-e, MC1251A-e, mc1151a-e chipset chipset developer's kit trajectory profile generator host i/o controller internal block diagram host interrupt data control motor output signals system registers (1-4) 1 8 5 poslimit 1/a neglimit 1/a ba 1/a 1/a quadrature decoder counter (1-4) pulse & direction home input step direction 1/a 1/a 1/a overtravel inputs miscellaneous signals 1/a host i/o encoder inputs i/o chip cp chip enc chip e - encoder option no dash - no encoder performance motion devices, inc. 12 waltham st. lexington, ma 02421 tel: 781.674.9860 fax: 781.674.9861 www.pmdcorp.com


▲Up To Search▲   

 
Price & Availability of MC1251A

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X